多重定义的标准分配器

发布于 2024-11-29 14:02:18 字数 685 浏览 0 评论 0原文

我正在尝试使用 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 is generated using nvcc, but as far as我可以看出,我为 nvcc 提供了与其他文件完全相同的编译器选项。

我能做什么,这个错误可能来自哪里?

I am trying to compile a C++ DLL with VC++2008. I already compiled it correctly with VC++2010, but with VC++2008, I get the following error:

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 is compiled using nvcc, but as far as I can tell, I gave nvcc the exact same compiler options than for the other files.

What can I do, and where could this error come from?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

何时共饮酒 2024-12-06 14:02:18

确保使用相同的运行时库,请查看 此答案了解如何设置项目。具体来说,请确保对 CUDA 构建规则和标准 C/C++ 构建(或 /MT)使用 /MTd。

Make sure that you use the same runtime library, check out this answer for how to set up the projects. Specifically, make sure you use /MTd for both the CUDA build rule and the standard C/C++ build (or /MT).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文