我無法將我的dllwrap
-ed Fortran代碼導入到C#中。我真的正在研究一些比我在這裏展示的例子更復雜的東西,但我想讓這個簡單的例子工作,然後解決全面的問題。我正在與MinGW和MSYS合作。在C中導入Fortran dll#
這裏是我的Fortran代碼,在文件MyThreeDll.f:
integer function three()
three = 3
return
end function
然後我跑gfortran -c MyThreeDll.f
一個MyThreeDll.o文件的預期輸出。我跑的下一個命令是
dllwrap --export-all-symbols MyThreeDll.o -gfortran -o MyThreeDll.dll
並得到一個dll文件。然後,我將進入Visual Studio 2010中C#控制檯項目的文件夾,並添加到項目中(它絕對不會讓我將其添加爲參考),並嘗試運行它。然後這發生。
我試圖使DLL與gfortran -shared
,但它並沒有幫助。在函數名稱之前和/或之後添加下劃線也沒有幫助。所以現在我被卡住了,因爲這是谷歌帶領我的。
在解決方案資源管理器窗口中選擇DLL,並將其「複製到輸出目錄」屬性設置爲「複製如果更新」。 –
把DLL放在你exe文件所在的文件夾中。 –
@HansPassant謝謝。再加上將這個函數重命名爲'three _()',這個技巧就成了。發佈作爲答案,我會接受。 – Arthur