在C#中导入fortran dll

时间:2013-08-07 11:57:40

标签: c# visual-studio fortran dllimport

我无法将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#控制台项目的文件夹,并添加到项目中(它绝对不会让我将其添加为参考)并尝试运行它。然后就会发生这种情况。

Screencap of my Visual Studio setup

我已尝试使用gfortran -shared制作dll,但它没有帮助。在函数名称之前和/或之后添加下划线也无济于事。所以现在我被卡住了,因为这就像谷歌带领我一样。

1 个答案:

答案 0 :(得分:1)

@HansPassant的评论解决了我的问题。对于后代,我应该补充一点,如果我使用选项dllwrap运行--output-def MyThreeDll.def命令以及所有其他内容,我将获得一个.def文本文件,其中包含函数的结果名称,即{ {1}},而不是three_()

这是dllwrap在gfortran的帮助下做的事情,显然,据说可以通过选项进行更改,尽管我既没有精力也没有必要去寻找方法。