我正在尝试使用VC ++ 2008编译C ++ DLL。我已经使用VC ++ 2010正确编译了它,但是使用VC ++ 2008,我收到以下错误:
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: unsigned short * __cdecl std::allocator<unsigned short>::allocate(unsigned __int64)" (?allocate@?$allocator@G@std@@QEAAPEAG_K@Z) already defined in cuda.obj
1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: unsigned short * __cdecl std::allocator<unsigned short>::allocate(unsigned __int64)" (?allocate@?$allocator@G@std@@QEAAPEAG_K@Z) already defined in cuda.obj
cuda.obj
是使用nvcc
编译的,但据我所知,我给nvcc提供了与其他文件完全相同的编译器选项。
我该怎么做,这个错误来自哪里?
答案 0 :(得分:1)
确保使用相同的运行时库,请查看this answer以了解如何设置项目。具体来说,请确保对CUDA构建规则和标准C / C ++构建(或/ MT)使用/ MTd。