2011-08-16 3 views
0

J'essaie de compiler une DLL C++ avec VC++ 2008. Je l'ai déjà compilé correctement avec VC++ 2010, mais avec VC++ 2008, je reçois l'erreur suivante:Affectation standard à définition multiple

1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: unsigned short * __cdecl std::allocator<unsigned short>::allocate(unsigned __int64)" ([email protected][email protected]@[email protected]@[email protected]) already defined in cuda.obj 
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: unsigned short * __cdecl std::allocator<unsigned short>::allocate(unsigned __int64)" ([email protected][email protected]@[email protected]@[email protected]) already defined in cuda.obj 

cuda.obj est compilé en utilisant nvcc, mais pour autant que je peux dire, j'ai donné nvcc exactement mêmes options de compilation que pour les autres fichiers.

Que puis-je faire, et d'où cette erreur proviendrait-elle?

Répondre

1

Assurez-vous que vous utilisez la même bibliothèque d'exécution, consultez this answer pour savoir comment configurer les projets. Plus précisément, assurez-vous d'utiliser/MTd pour la règle de construction CUDA et la version standard C/C++ (ou/MT).

Questions connexes