2016-01-20 63 views
2

我想从D模块调用C++函数。我已按照此页面上的指南http://dlang.org/spec/cpp_interface.html,但我无法使其工作。从D调用C++静态库

我在Visual Studio 2015中创建了一个解决方案,其中包含两个项目,一个是D项目,另一个是C++项目。我构建C++项目并生成一个.lib文件。然后在D项目中,我已经在配置属性 - >链接器 - >常规 - >库文件中设置了lib文件的路径,但是当我运行该解决方案时,我得到Error43:不是有效的库文件。

在此先感谢

+0

的Visual Studio不支持d开箱即用,您使用的一些插件?你在用什么D编译器? –

+0

我正在使用Visual D 0.3.43和dmd 2.069.2 –

回答

2

问题是,你的库包含COFF对象文件,但DMD希望他们是在OMF格式。 (请看“我可以链接使用另一个编译器创建的C目标文件吗?”@https://dlang.org/faq.html

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

此外,看一看:Converting COFF lib file to OMF format

+0

您是否有链接到该工具?我似乎无法找到一种方式来下载它的任何地方 –

+0

dmd为win32可以输出coff现在几个月(开关__- ms32coff__),你​​可以做,而不是转换。另一种选择是在C++中创建一个动态库。 –