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

main.obj : fatal error LNK1143: invalid or corrupt file: no symbol for COMDAT section 0x6

我在 Windows 10 机器上,我有 2 个文件,main.cpp 和 cuda.cu(我已经在 Ubuntu 上成功构建了这个项目,我正在尝试让它建立在 Windows 之上)。我将它们都编译成 64 位架构的目标文件。我目前安装了 MS Visual Studio 2010,但我知道它太旧了。如果您认为这是导致此问题的原因,我可以安装 2015(但我不这么认为)。

当我尝试使用命令

link这两个文件时
nvcc main.obj cuda.obj

我收到这个错误:-

main.obj : fatal error LNK1143: invalid or corrupt file: no symbol for COMDAT section 0x6

我该怎么办?

正如@RichardCritten 所指出的,

the files should be compiled with MSVC as the object formats are tool-chain specific. LNK1143 is from the MS linker and it can't understand the format of the obj files produced by the other tool-chain.

所以 MinGW 的 g++ 创建的目标文件不能与 MSVC 的 cuda 程序的目标文件链接