一段时间以来,我一直将CodeBlocks与Digital Mars D编译器和LLVM Clang编译器结合使用,没有任何问题。现在,我需要使用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.exe
和lld-link.exe
会产生类似的错误。
有什么建议吗?
答案 0 :(得分:1)
看起来像Code :: Blocks在Windows上对对象文件使用.o
扩展名,而编译器前端中的链接器驱动程序可能期望对象文件具有.obj
扩展名,更多在Windows上很常见。
我对Code :: Blocks或它与D编译器的接口不熟悉,但是您可以尝试检查它是否具有控制对象文件使用什么扩展名的设置。在负责在Code :: Blocks中构建D编译器命令行的任何代码中,这都可能是一个错误(或者简单地,缺少Windows支持)。