Linking Problems CUDA 4.0, VS 2010, LNK2005

Hello

I have a simple Matrix Multiplication Example,

I use cmake 2.8.4, windows 7, cuda 4.0 64bit, and generate a VS 2010 file.

The nvcc compiles the necessary file .cu but there are stupid linking problems when VS tries to link.

Everything is compiled with /MDd.

I realized that the path to the CC compiler “-ccbin” is set to : -ccbin “C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin”

and is not set to: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64

Could that be the problem!? I Attached the complete Build Folder probably needs a rebuild with cmake, its already generated so If somebody could have a look what the problem is, would be really really great!

Here is the output:

1>------ Build started: Project: MatrixTest, Configuration: Debug x64 ------

1>Build started 5/20/2011 6:30:07 PM.

1>InitializeBuildStatus:

1>  Touching "MatrixTest.dir\Debug\MatrixTest.unsuccessfulbuild".

1>CustomBuild:

1>  All outputs are up-to-date.

1>  Building NVCC (Device) object MatrixTest/Debug/MatrixTest_generated_KernelsCuda.cu.obj

1>  -- Removing C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/Debug/MatrixTest_generated_KernelsCuda.cu.obj

1>  

1>  "C:/Program Files (x86)/CMake 2.8/bin/cmake.exe" -E remove C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/Debug/MatrixTest_generated_KernelsCuda.cu.obj

1>  

1>  -- Generating dependency file: C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.NVCC-depend

1>  

1>  "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/bin/nvcc.exe" -M -D__CUDACC__ E:/GabrielNuetzi/Repository/cudaTest/Projects/CUDA/CommonSource/src/KernelsCuda.cu -o C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.NVCC-depend -ccbin "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin" -m64 -Xcompiler ,\"/DWIN32\",\"/D_WINDOWS\",\"/W3\",\"/Zm1000\",\"/EHsc\",\"/GR\",\"/D_DEBUG\",\"/MDd\",\"/Zi\",\"/Ob0\",\"/Od\",\"/RTC1\" -DNVCC "-IC:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/include" "-IC:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/C/common/inc" "-IC:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/shared/inc" -IC:/Develop/Boost/boost_x64_1_46_1 -IE:/GabrielNuetzi/Repository/cudaTest/Projects/CUDA/MatrixTest/inc -IE:/GabrielNuetzi/Repository/cudaTest/Projects/CUDA/CommonSource/inc "-IC:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/include"

1>  

1>  KernelsCuda.cu

1>  KernelsCuda.cu

1>  -- Generating temporary cmake readable file: C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.depend.tmp

1>  

1>  "C:/Program Files (x86)/CMake 2.8/bin/cmake.exe" -D input_file:FILEPATH=C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.NVCC-depend -D output_file:FILEPATH=C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.depend.tmp -P "C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindCUDA/make2cmake.cmake"

1>  

1>  -- Copy if different C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.depend.tmp to C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.depend

1>  

1>  "C:/Program Files (x86)/CMake 2.8/bin/cmake.exe" -E copy_if_different C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.depend.tmp C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.depend

1>  

1>  -- Removing C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.depend.tmp and C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.NVCC-depend

1>  

1>  "C:/Program Files (x86)/CMake 2.8/bin/cmake.exe" -E remove C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.depend.tmp C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/CMakeFiles/MatrixTest_generated_KernelsCuda.cu.obj.NVCC-depend

1>  

1>  -- Generating C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/Debug/MatrixTest_generated_KernelsCuda.cu.obj

1>  

1>  "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/bin/nvcc.exe" E:/GabrielNuetzi/Repository/cudaTest/Projects/CUDA/CommonSource/src/KernelsCuda.cu -c -o C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/Debug/MatrixTest_generated_KernelsCuda.cu.obj -ccbin "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin" -m64 -Xcompiler ,\"/DWIN32\",\"/D_WINDOWS\",\"/W3\",\"/Zm1000\",\"/EHsc\",\"/GR\",\"/D_DEBUG\",\"/MDd\",\"/Zi\",\"/Ob0\",\"/Od\",\"/RTC1\" -DNVCC "-IC:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/include" "-IC:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/C/common/inc" "-IC:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/shared/inc" -IC:/Develop/Boost/boost_x64_1_46_1 -IE:/GabrielNuetzi/Repository/cudaTest/Projects/CUDA/MatrixTest/inc -IE:/GabrielNuetzi/Repository/cudaTest/Projects/CUDA/CommonSource/inc "-IC:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.0/include"

1>  

1>  KernelsCuda.cu

1>  tmpxft_000009d4_00000000-3_KernelsCuda.cudafe1.gpu

1>  tmpxft_000009d4_00000000-8_KernelsCuda.cudafe2.gpu

1>  KernelsCuda.cu

1>  tmpxft_000009d4_00000000-3_KernelsCuda.cudafe1.cpp

1>  tmpxft_000009d4_00000000-14_KernelsCuda.ii

1>  

1>  Generated C:/Users/ZfMGPU/Desktop/ToMyFolder/Repository/cudaTest/Projects/CUDA/BUILD/MatrixTest/Debug/MatrixTest_generated_KernelsCuda.cu.obj successfully.

1>ClCompile:

1>  All outputs are up-to-date.

1>ManifestResourceCompile:

1>  All outputs are up-to-date.

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::operator<<(int)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::operator<<(class std::basic_ostream<char,struct std::char_traits<char> > & (__cdecl*)(class std::basic_ostream<char,struct std::char_traits<char> > &))" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::operator<<(float)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: void __cdecl std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __int64 __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,__int64)" (?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: int __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::sputc(char)" (?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_streambuf<char,struct std::char_traits<char> > * __cdecl std::basic_ios<char,struct std::char_traits<char> >::rdbuf(void)const " (?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: char __cdecl std::basic_ios<char,struct std::char_traits<char> >::fill(void)const " (?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::flush(void)" (?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > * __cdecl std::basic_ios<char,struct std::char_traits<char> >::tie(void)const " (?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: void __cdecl std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::operator<<(double)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: virtual __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::~basic_streambuf<char,struct std::char_traits<char> >(void)" (??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::pbase(void)const " (?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::pbump(int)" (?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::gbump(int)" (?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::eback(void)const " (?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::gptr(void)const " (?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::pptr(void)const " (?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::setg(char *,char *,char *)" (?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::egptr(void)const " (?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: void __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::setp(char *,char *)" (?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: char * __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::epptr(void)const " (?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::basic_streambuf<char,struct std::char_traits<char> >(void)" (??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: char __cdecl std::basic_ios<char,struct std::char_traits<char> >::widen(char)const " (?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: virtual __cdecl std::basic_ios<char,struct std::char_traits<char> >::~basic_ios<char,struct std::char_traits<char> >(void)" (??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: virtual __cdecl std::basic_ostream<char,struct std::char_traits<char> >::~basic_ostream<char,struct std::char_traits<char> >(void)" (??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __cdecl std::basic_ostream<char,struct std::char_traits<char> >::basic_ostream<char,struct std::char_traits<char> >(class std::basic_streambuf<char,struct std::char_traits<char> > *,bool)" (??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "protected: __cdecl std::basic_ios<char,struct std::char_traits<char> >::basic_ios<char,struct std::char_traits<char> >(void)" (??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::locale __cdecl std::basic_ios<char,struct std::char_traits<char> >::imbue(class std::locale const &)" (?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: void __cdecl std::basic_ios<char,struct std::char_traits<char> >::clear(int,bool)" (?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: char __cdecl std::basic_ios<char,struct std::char_traits<char> >::fill(char)" (?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::operator<<(unsigned __int64)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::basic_ostream<char,struct std::char_traits<char> >::operator<<(unsigned int)" (??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z) already defined in MatrixTest_generated_KernelsCuda.cu.obj

1>C:\Users\ZfMGPU\Desktop\ToMyFolder\Repository\cudaTest\Projects\CUDA\BUILD\MatrixTest\Debug\MatrixTest.exe : fatal error LNK1169: one or more multiply defined symbols found

1>

1>Build FAILED.

1>

1>Time Elapsed 00:00:05.29

========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========

Thanks for the inputs!
CUDA.zip (67 KB)

Hi, I’m the author of the FindCUDA CMake module. Sorry for the delay. I hadn’t installed VS 2010 on my current system yet.

I downloaded your zip file and I was able to compile it in x64 mode just fine with the following tools:

CMake 2.8.4
VS 2010
CUDA 4.0 Final
boost 1.46.1 (Multithreaded DLL and Multithreaded Debug DLL)

Can you try the latest version of CUDA?