main.obj:致命错误 LNK1143:文件无效或损坏:COMDAT 部分 0x6 没有符号

dtn*_*34- 5 c++ cuda g++ nvcc

我在一台 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)

我应该怎么办?

dtn*_*34- 5

正如@RichardCritten 所指出的,

这些文件应使用 MSVC 进行编译,因为对象格式是特定于工具链的。LNK1143 来自 MS 链接器,它无法理解其他工具链生成的 obj 文件的格式。

因此 MinGW 的 g++ 创建的目标文件无法通过 MSVC 与 cuda 程序的目标文件链接