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

C++ main.obj:致命错误LNK1143:文件无效或损坏:COMDAT节0x6没有符号,c++,cuda,g++,nvcc,C++,Cuda,G++,Nvcc,我在一台Windows 10机器上,我有两个文件,main.cpp和cuda.cu(我已经在Ubuntu上成功地构建了这个项目,我正在尝试让它在Windows上构建)。我编译了这两个文件以生成64位体系结构的对象文件。我目前安装了MS Visual Studio 2010,我知道它太旧了。如果你认为这是原因,我可以安装2015(但我不这么认为) 当我尝试使用命令链接这两个文件时 nvcc main.obj cuda.obj 我得到这个错误:- main.obj : fatal error LN

我在一台Windows 10机器上,我有两个文件,main.cpp和cuda.cu(我已经在Ubuntu上成功地构建了这个项目,我正在尝试让它在Windows上构建)。我编译了这两个文件以生成64位体系结构的对象文件。我目前安装了MS Visual Studio 2010,我知道它太旧了。如果你认为这是原因,我可以安装2015(但我不这么认为)

当我尝试使用命令链接这两个文件时

nvcc main.obj cuda.obj
我得到这个错误:-

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

我该怎么办?

正如@RichardCritten所指出的

文件应使用MSVC编译,因为对象格式是 工具链特定。LNK1143来自MS链接器,它不能 了解对方生成的obj文件的格式 工具链


因此,MinGW的g++创建的对象文件不能与cuda程序的对象文件用MSVC链接

用MSVC编译对象格式是特定于工具链的
LNK1143
来自MS链接器,它无法理解其他工具链生成的obj文件的格式。ps why remove“是main.obj(由我的g++(MinGW_w64)编译的文件)导致了此错误。”?@RichardCritten why remove“是main.obj(由我的g++(MinGW_w64)编译的文件)导致了此错误。”?我自己什么都不想说。谢谢你的回复。“我会试试看,然后再向你汇报。@RichardCriten有一个额外的问题,有没有不使用MSVC的方法可以做到这一点?”?有没有办法只在终端上完成?如何从我的Ubuntu中完成它?如果没有,请解释原因。“请解释原因”:“对象格式是特定于工具链的”。这可以从Ubuntu上完成吗?这应该在另一个问题中提出。好吧,你删除了关于发生了什么的唯一线索。您不能使用MinGW编译,而期望它与MSVC链接。它们具有不兼容的对象文件格式。