1

我无法将我的dllwrap-ed Fortran 代码导入 C#。我真的在做一些比我在这里展示的例子更复杂的事情,但我想让这个简单的例子工作,然后解决全面的问题。我正在与 MinGW 和 MSYS 合作。

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

我的 Visual Studio 设置的屏幕截图

我试过用 制作 dll gfortran -shared,但没有帮助。在函数名之前和/或之后添加下划线也无济于事。所以现在我被卡住了,因为这是谷歌引导我的。

4

1 回答 1

1

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

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

于 2013-08-07T12:23:24.983 回答