之前对矩阵求解这块并不了解,C++编程也是小白级别,自己在用umfpack的过程中走了很多弯路。现在终于是搞好了,写一下用的过程中碰到的问题,希望和我一样的初学者少走点弯路。umfpack本身并没有提供c直接能够用的库文件,需要自己编译,我编译了很多次都没弄好,所以只好下了一个别人编好的版本,地址http://download.youkuaiyun.com/detail/bugrunner/4133544,经测可用,编译器是codeblocks。
例子就不说了前辈们都写了很多,测试代码umfpack官网上也有。关键是怎么编译的问题。一开始我只l链接文件包根目录底下的几个.h文件,完了以后会出现很多奇葩问题,后来找了很多原因,把.h重命名改成了.a,还是会提示找不到umfpack.h。后来在把文件包里的AMD/INCLUDE,umfpack/include还有ufconfig这三个文件夹添加到索引里,终于开始编译了,但是最后还是会报错,提示undefined reference to XXXX,根据umfpack官方的说法(http://matrixprogramming.com/2008/03/umfpack),还得再加一个依赖包 atlas-3.6-win.tar.gz,下载地址http://matrixprogramming.com/files/bin/atlas-3.6-win.tar.gz(上边官方解释里给的地址)。把这里头的几个.a文件链接进去。再编译就OK了!不知道是因为我编译器的问题还是什么。必须所有都做到才能编译成功。
总结一下吧就是
1下来的安装包根目录里的几个。h改成。a再link,再下一个atlas-3.6-win.tar.gz包,把里面的.a也link.
2.AMD/INCLUDE,umfpack/include还有ufconfig这三个文件夹添加到build option的索引目录里。
希望能帮到有需要的人~!
今天换了一台电脑调试了一下,发现又出现了奇葩错误,“ld.exe”。。。。。折腾半天,到http://www.zhaodll.com/dll/l/201305/322270.html下了一个ld.exe放到指定目录居然就好了。。。。。