2

我正在尝试让 Arpack 和 Arpack++ 在带有 Visual Studio 2010 的 Windows 7 中工作,并使用 swig 制作可与 C# 一起使用的界面。这基本上是为了创建一个基准,我将根据它来衡量使用 C# 解决特征向量问题的所有进一步尝试,但首先我需要它来工作。

我已经设法使用本指南编译了 Arpack ,尽管由于 g77 不再是 MinGW 附带的 Fortran 编译器,我们得到了 gfortran。进一步的更改ARmake.inc包括注释掉-cg89选项,这会产生错误(我不知道这填充 g77 的目的是什么,但 gfortran 不接受它)。

进一步遵循指南,思考“至少它现在已经编译,有或没有选项。” 我继续dllwrap。但是,该-lg2c选项未被接受,因为libg2c新版本的 MinGW 中不包含库文件。如果我尝试不使用该选项,我会从我的一些.o和相应的.f-files 中收到有关未定义引用的错误。我应该使用哪些库文件?我在做其他明显错误的事情吗?

4

1 回答 1

1

我发现密钥似乎是 usegfortran而不是dllwrap. 这是我安装MinGW和msys后使用的整个过程

1) 运行安装后脚本并确保它不会抱怨缺少 gcc 等。如果确实如此,请安装这些软件包。

msys\1.0\postinstall\pi.bat

2)解压ARPACK文件和补丁到msys\1.0\home\yourname\ARPACK

3)编辑ARmake.inc和更改FCFFLAGS行:

FC      = gfortran
#FFLAGS = -O -cg89

4)编辑UTIL/second.f并用这个替换所有内容。这可以防止有关 ETIME 的错误。不确定它的作用,但它是由http://blog.csdn.net/guillotine007/article/details/8636647建议的

  SUBROUTINE SECOND( T )

  REAL       T

  CALL CPU_TIME(T)

  RETURN

  END

5)编译成.o文件

make lib

6) 使用 gfortran 而不是 dllwrap 来链接和创建 dll

gfortran -shared BLAS/*.o LAPACK/*.o SRC/*.o UTIL/*.o -o arpack_win32.dll

7) 生成的 dll 依赖于 3 个其他 dll:libgcc_s_dw2-1.dll, libgfortran-3.dlllibquadmath-0.dll您可以从 MinGW 安装中获得。

于 2013-09-29T06:55:34.293 回答