2016-01-20 91 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++中創建一個動態庫。 –