Je suis en train de faire de la programmation avec CUDA C de nVidia. J'utilise Visual Studio 2008 comme environnement de développement et j'ai quelques problèmes de liaison et je me demande si quelqu'un sait comment y remédier ou a eu le même problème et pourrait offrir une solution.Problème de liaison Visual Studio avec Cuda
Mon programme est constitué de 3 fichiers. 1 fichier d'en-tête (stuff.h), 1 fichier source C (stuff.c) et 1 fichier CUDA C (main.cu). (Les noms sont faux mais c'est juste pour illustrer le point).
Maintenant stuff.h/stuff.c définit/implémente certaines fonctions d'aide que j'appelle depuis main.cu. J'utilise Visual Studio 2008 et les Cuda.rules du GPU Computing SDK de nVidia et tout se compile bien mais ... quand il s'agit de lier tous les fichiers ensemble, il échoue. Il semble que toutes les fonctions définies dans stuff.h (et implémentées dans stuff.c) ne sont pas liées correctement car elles sont marquées comme "symboles externes non résolus".
Quelles sont les causes possibles et comment puis-je résoudre ce problème?
Un grand merci,
ExtremeCoder
Bon alors j'ai réussi à obtenir tout compilation. Il semble que tout ce que j'avais à faire était de changer l'extension du fichier d'implémentation stuff de .c en .cpp (ce qui signifie que la compilation en C++ fonctionne alors que la compilation en c ne l'est pas!).
Ce qui pourrait être à l'origine de cela? Je préfère garder tout comme .c au lieu de cpp (comme cela est vraiment destiné à être le code C ...
Tous les pointeurs?
Merci pour l'aide. Je l'ai fait fonctionner. Est-il possible de faire des fichiers .cu compiler en tant que fichiers C et non en tant que fichiers C++ alors? Merci. – ExtremeCoder
Vous pouvez essayer l'option '--host-compilation = c', mais voir cet article pour les mises en garde: http://forums.nvidia.com/index.php?showtopic=101609. En général, je préfère conserver ma fonction 'main' et tout le reste dans les fichiers C/C++ standard, puis avoir uniquement des noyaux et des wrappers dans les fichiers CU. Beaucoup de trucs Thrust doivent aussi aller dans des fichiers CU ... – Tom