我试图让Arpack和Arpack++在Windows7中与Visual 2010一起工作,并使用swig创建一个可以与C#一起使用的接口。这基本上是为了创建一个基准,在此基础上,我将度量使用C#解决特征向量问题的所有进一步尝试,但首先,我需要这样做。
我已经成功地使用本指南编译了Arpack,尽管略有改动,因为g77不再是MinGW附带的Fortran编译器,而是gfortran。对ARmake.inc的进一步更改包括注释掉-cg89选项,这会产生一个错误(我不知道用g77填充的目的是什么,但gfortran不接受它)。
进一步遵循指南,思考“至少现在已经编译好了,不管有没有选择”。我继续到dllwrap。但是,-lg2c选项未被接受,因为库文件libg2c不包含在较新版本的MinGW中。如果我尝试不使用该选项,就会从我的一些.o和相应的.f-files中得到关于未定义引用的错误。我应该使用哪些库文件?我是不是做了其他明显的错事?
发布于 2013-09-29 06:55:34
我发现关键似乎是使用gfortran而不是dllwrap。下面是我在安装MinGW和msys之后使用的整个过程
1)运行后安装脚本,确保它不会抱怨缺少gcc等。如果有,安装这些软件包。
msys\1.0\postinstall\pi.bat2)将ARPACK文件和补丁提取到msys\1.0\home\yourname\ARPACK中。
3)编辑ARmake.inc并将FC和FFLAGS行更改为:
FC = gfortran
#FFLAGS = -O -cg894)编辑UTIL/second.f并用它替换所有内容。这可以防止有关ETIME的错误。不确定它能做什么,但它是由http://blog.csdn.net/guillotine007/article/details/8636647建议的
SUBROUTINE SECOND( T )
REAL T
CALL CPU_TIME(T)
RETURN
END5)编译为.o文件
make lib6)用gfortran代替dll来链接和创建dll。
gfortran -shared BLAS/*.o LAPACK/*.o SRC/*.o UTIL/*.o -o arpack_win32.dll7)得到的dll依赖于其他三个dll:libgcc_s_dw2-1.dll、libgfortran-3.dll、libquadmath-0.dll,您可以从MinGW安装中获得它们。
https://stackoverflow.com/questions/18046832
复制相似问题