我无法将dllwrap
编辑的Fortran代码导入C#。我正在做一些比我在这里展示的例子更复杂的事情,但我想让这个简单的例子起作用,然后解决全面的问题。我正在使用MinGW和MSYS。
这是我的fortran代码,在文件MyThreeDll.f中:
integer function three()
three = 3
return
end function
然后我使用一个MyThreeDll.o文件的预期输出运行gfortran -c MyThreeDll.f
。我跑的下一个命令是
dllwrap --export-all-symbols MyThreeDll.o -gfortran -o MyThreeDll.dll
并获得一个DLL文件。然后我将进入Visual Studio 2010中我的C#控制台项目的文件夹,并添加到项目中(它绝对不会让我将其添加为参考)并尝试运行它。然后就会发生这种情况。
我已尝试使用gfortran -shared
制作dll,但它没有帮助。在函数名称之前和/或之后添加下划线也无济于事。所以现在我被卡住了,因为这就像谷歌带领我一样。
答案 0 :(得分:1)
@HansPassant的评论解决了我的问题。对于后代,我应该补充一点,如果我使用选项dllwrap
运行--output-def MyThreeDll.def
命令以及所有其他内容,我将获得一个.def文本文件,其中包含函数的结果名称,即{ {1}},而不是three_()
。
这是dllwrap在gfortran的帮助下做的事情,显然,据说可以通过选项进行更改,尽管我既没有精力也没有必要去寻找方法。