Nous avons donc récemment mis à jour notre projet pour utiliser Microsoft Visual Studio 2010 et nous rencontrons quelques problèmes avec nos projets CUDA. J'ai installé 2008, et j'utilise le toolkit vc90, et les fichiers semblent compiler (leurs fichiers .obj associés sont créés). C'est dans le projet qui crée un fichier .lib comme sa sortie. Le fichier .lib est ensuite lié dans un autre projet qui génère des erreurs de liens car l'un des fichiers de la bibliothèque (Matrix.obj) ne trouve pas l'un des symboles qui devraient être dans CUDAMatrix.obj.Microsoft Visual Studio ne lie pas mes fichiers CUDA .obj à mon fichier .lib
J'ai exécuté dumpbin/SYMBOLS sur CUDAMatrix.obj, et le symbole est là, n'est pas UNDEF, et est externe. J'ai couru dumpbin sur notre .lib, et le symbole ne semble pas être à l'intérieur. Je me suis tourné la verbosité de la construction de la bibliothèque et la liste des fichiers OBJ après:
c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\Lib.exe
Il ne semble pas contenir CUDAMatrix.obj. En résumé, comment le projet Visual Studio sait-il ce que les fichiers .obj doivent coller dans le fichier .lib en cours de création? Je n'ai pu trouver la liste réelle nulle part, et le sous-menu du bibliothécaire n'a pas semblé aider.
Ou le moins commodément, existe-t-il un outil externe (similaire à 'ar' sur linux) que je peux utiliser pour fusionner le .obj produit avec la bibliothèque? Je pensais que peut-être le commutateur/MERGE sur lib.exe le ferait, mais j'ai continué à obtenir une erreur .dll introuvable lorsque j'ai essayé de lancer cela à partir de la ligne de commande.
P.S. Les dumpbins ont également confirmé que les fichiers .lib et .objs étaient tous deux ciblés sur x86.
P.P.S. Les ajouter en tant que «dépendances supplémentaires» chez le bibliothécaire semble fonctionner, mais n'y a-t-il pas un bon moyen de faire cela automatiquement? Ils font après tout partie du projet.