我很难将我的dllwrap-ed 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 2010中的C#控制台项目的文件夹中,并将其添加到项目中(它绝对不允许我将其添加为引用),并尝试运行它。然后就会发生这种事。

我试过用gfortran -shared创建dll,但没有帮助。在函数名之前和/或之后添加下划线也没有帮助。所以现在我被困住了,因为这是谷歌引领我前进的道路。
发布于 2013-08-07 12:23:24
汉森的评论解决了我的问题。对于后代,我应该补充一点,如果我使用选项--output-def MyThreeDll.def运行--output-def MyThreeDll.def命令,除了所有其他内容之外,我将得到一个.def文本文件,其中包含函数的最终名称,即three_(),而不是three()。
显然,这是在gfortran的帮助下做的,而且据说可以用选项来改变,尽管我既没有精力,也没有必要去寻找方法。
https://stackoverflow.com/questions/18102786
复制相似问题