从D调用C ++静态库

时间:2016-01-20 07:42:29

标签: c++ visual-studio d

我试图从D模块调用c ++函数。我已按照此页http://dlang.org/spec/cpp_interface.html上的指南进行操作,但我无法将其付诸实施。

我在visual studio 2015中创建了一个解决方案,其中包含两个项目,一个是D项目,另一个是C ++项目。我构建了C ++项目并生成.lib文件。然后在D项目中,我在Configuration Properties - >中设置了lib文件的路径。链接器 - >一般 - >库文件但是当我运行解决方案时,我得到Error43:不是有效的库文件。

提前致谢

1 个答案:

答案 0 :(得分:2)

问题是您的库包含COFF个目标文件,但DMD希望它们采用OMF格式。 (看看"我可以链接用其他编译器创建的C对象文件吗?" @ https://dlang.org/faq.html

您需要做的是将库转换为OMF以便与DMD一起使用,例如coff2omf tool。此工具是DigitalMars扩展包的一部分(查看freecompiler download部分)或者,如果可以,使用一些C ++编译器(如DigitalMars C / C ++编译器)生成OMF库。

另外,请查看:Converting COFF lib file to OMF format