我在一台 Windows 10 机器上,我有 2 个文件,main.cpp 和 cuda.cu(我已经在 Ubuntu 上成功构建了这个项目,我正在尝试让它在 Windows 上构建)。我将它们都编译为 64 位架构的目标文件。我当前安装了 MS Visual Studio 2010,但我知道它太旧了。如果您认为这是造成此问题的原因,我可以安装 2015(但我不这么认为)。
当我尝试使用命令链接两个文件时
nvcc main.obj cuda.obj
Run Code Online (Sandbox Code Playgroud)
我收到此错误:-
main.obj : fatal error LNK1143: invalid or corrupt file: no symbol for COMDAT section 0x6
Run Code Online (Sandbox Code Playgroud)
我应该怎么办?
正如@RichardCritten 所指出的,
这些文件应使用 MSVC 进行编译,因为对象格式是特定于工具链的。LNK1143 来自 MS 链接器,它无法理解其他工具链生成的 obj 文件的格式。
因此 MinGW 的 g++ 创建的目标文件无法通过 MSVC 与 cuda 程序的目标文件链接