【发布时间】:2018-11-29 18:04:51
【问题描述】:
我在 Windows 10 机器上,我有 2 个文件,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
我该怎么办?
【问题讨论】:
-
使用 MSVC 编译,对象格式是特定于工具链的。
LNK1143来自 MS 链接器,它无法理解其他工具链生成的 obj 文件的格式。 ps 为什么去掉“导致这个错误的是main.obj(我的g++编译的文件(MinGW_w64))。”? -
@RichardCritten 为什么要删除“导致此错误的是 main.obj(我的 g++ (MinGW_w64) 编译的文件)。” ? 我自己什么都不想说。并感谢您的回复。我会尝试并报告。
-
@RichardCritten 一个额外的问题,有没有办法在不使用 MSVC 的情况下做到这一点?有什么办法只从终端做吗?它可以从我的 Ubuntu 中完成吗?如果不是,请解释原因。
-
“请解释原因”:“对象格式是特定于工具链的”。可以从 Ubuntu 完成吗?应该在另一个问题中提出。
-
好吧,你删除了发生什么事的唯一线索。您不能使用 MinGW 编译并期望它与 MSVC 链接。它们具有不兼容的目标文件格式。