1

一段时间以来,我一直在使用带有 Digital Mars D 编译器和 LLVM Clang 编译器的 CodeBlocks,没有任何问题。现在我需要使用 LDC D 编译器并且在链接器调用方面遇到问题。

我得到以下输出:

-------------- Build: Debug in test (compiler: LLVM D Compiler)---------------

ldc2.exe  -g    -I"C:\Program Files\LDC\ldc2-1.13.0-windows-x64\bin" -c hello.d -of=obj\Debug\hello.o
ldc2.exe -L-L"C:\Program Files\LDC\ldc2-1.13.0-windows-x64\lib" -of=bin\Debug\test.exe obj\Debug\hello.o   
Error: unrecognized file extension o
Process terminated with status 1 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))

编译步骤似乎工作正常,但将 ldc2.exe 指定为链接器显然失败了。

同样,在 CodeBlocks 的链接器规范中使用ldmd2.exeand会产生类似的错误。lld-link.exe

有什么建议么?

4

1 回答 1

1

看起来 Code::Blocks.o在 Windows 上使用目标文件的扩展名,而编译器前端中的链接器驱动程序可能期望目标文件具有.obj扩展名,这在 Windows 上更常见。

我不熟悉 Code::Blocks 或它如何与 D 编译器交互,但您可以尝试检查它是否具有控制用于目标文件的扩展名的设置。这可能是负责在 Code::Blocks 中构建 D 编译器命令行的任何代码中的错误(或者,简单地说,缺乏 Windows 支持)。

于 2019-01-09T19:59:43.233 回答