因为从网上dang的代码,用的是fortran写的,里面有一部分是调用umfpack包做稀疏矩阵求解,特意下载的VS2019和intel fortran,生成解决方案的时候,总是说umfpack_函数是外部符号或者命令如图:
继续查原因后,说是需要在项目属性里调用lib,于是乎在网上找了编译好的lib,然后进行如下操作1,在fortran-general里,把UMFOACK包里的include地址卸载Additional Include Directories
2.在linker-general里把UMFPAK包中的Lib地址写上
3.在linker-inpu中,写上需要的lib库
完成这些后,我又重新生成解决方案,还是一开始的错误,不能解析unfpack
于是,我怀疑可能是网上UMFPACK版本太低了,就打算自己编译一个lib
按照UMFPACK的官方使用手册中,编译UNMFPACK需要AMD,SuiteSparse_config,然后就是UMFPACK文件,把它们解压后放在同一目录中。
安装mingw,安装界面要是我这个,
里面的配置怎么选,网上都有,建议安装地址默认就好了。一定别忘了在我的电脑-高级-环境变量中把C:\MinGW添加到Path里。在cmd中可以键入gcc -v查看gcc版本,mingw-make -v查看make的版本。另外注意,make命令要在cmd中使用,power shell好像不行的。
安装Cygwin64,网上都有的,然后打开Cygwin64 Terminal。在此之前,根据官方手册中说,需要在SuiteSparse_config-SuiteSparse_config.mk中通过查找把 UMFPACK CONFIG设置为-DNCHOLMOD,即UMFPACK CONFIG = -DNCHOLMOD,不过一般是默认的,最好再检查下。
继续,打开Cygwin64 Terminal,输入UMFPACK文件夹里的那个UMFPACK的地址,如我的 C:/Users/Administrator/Desktop/aer2018/HANK-master/UMFPACK/UMFPACK
然后键入make
正常情况下,会在AMD的lib还有UMFPACK的lib中出现几个lib文件,但是我的出问题了。
尝试了很多方法,比如删除关于这些问题的文件啥的,还会有新的问题,于是我就做到这里了,给需要的人做一个参考,不过我实在不知道哪里出的问题,希望有大神帮忙解答。。。所谓一顿操作猛如虎,一看战力0.5就是我了。
我把关于这些需要的文件和安装包打包放资源里了,里面的UMFPAKCK版本挺新的,我额外又放了一个5.6.2版本的,可以在网上下,AMD自己找的话至少要是2.0版本以后。
转用Matlab,看看能不能把Fortran代码自己翻译翻译成Matlab代码
选好UMFPAK包中的MATLAB文件夹,然后那行umfpack_install,就能生成lib了,matlab怎么用umfpack还待研究。