首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >windows上的Arpack(++)

windows上的Arpack(++)
EN

Stack Overflow用户
提问于 2013-08-04 19:37:38
回答 1查看 1.9K关注 0票数 2

我试图让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中得到关于未定义引用的错误。我应该使用哪些库文件?我是不是做了其他明显的错事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-29 06:55:34

我发现关键似乎是使用gfortran而不是dllwrap。下面是我在安装MinGW和msys之后使用的整个过程

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

代码语言:javascript
运行
复制
msys\1.0\postinstall\pi.bat

2)将ARPACK文件和补丁提取到msys\1.0\home\yourname\ARPACK中。

3)编辑ARmake.inc并将FCFFLAGS行更改为:

代码语言:javascript
运行
复制
FC      = gfortran
#FFLAGS = -O -cg89

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

代码语言:javascript
运行
复制
  SUBROUTINE SECOND( T )

  REAL       T

  CALL CPU_TIME(T)

  RETURN

  END

5)编译为.o文件

代码语言:javascript
运行
复制
make lib

6)用gfortran代替dll来链接和创建dll。

代码语言:javascript
运行
复制
gfortran -shared BLAS/*.o LAPACK/*.o SRC/*.o UTIL/*.o -o arpack_win32.dll

7)得到的dll依赖于其他三个dll:libgcc_s_dw2-1.dlllibgfortran-3.dlllibquadmath-0.dll,您可以从MinGW安装中获得它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18046832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档