lapackを授業の課題で用いることになった。コマンドプロンプトがよくわかってないので何とかしてVisual Studioでやってみた。
#始めにやったこと
Clapackをダウンロード (Netlibから)
(http://icl.cs.utk.edu/lapack-for-windows/clapack/)
Visual Studio 2017ではバージョン的に不可能なので(_imp_iob_func?が未解決のシンボルらしい 詳しいことはわからないので教えてください。)
Visual studio 2013 express desktopをダウンロード。
ライブラリの導入
Clapackのinclude,libディレクトリを設定する。
(includeには~.hが入っているディレクトリを配置、libには~.libが入っているディレクトリを配置する。)
(includeはプロパティ→c/c++/一般から)
(libはプロパティ→リンカーから)
libの追加ライブラリは blas.lib libf2c.lib lapack.lib
私はここを参考にしました。より詳しい内容が書かれている素晴らしい記事です。
[Corgi.Lab]
(https://corgi-lab.com/windows/vs-external-library/)
#注意
コードを書くときは, f2c.h →clapack.hの順で書く。 逆で書くとなぜかエラー
#出来ました~
ソースコード(写しただけなのであんまり意味ないですが)
#include<stdio.h>
#include "f2c.h"
#include "clapack.h"
/* 3x3 matrix A
* 76 25 11
* 27 89 51
* 18 60 32
*/
doublereal A[9] = { 76, 27, 18, 25, 89, 60, 11, 51, 32 };
doublereal b[3] = { 10, 7, 43 };
integer N = 3;
integer nrhs = 1;
integer lda = 3;
integer ipiv[3];
integer ldb = 3;
integer info;
dgesv_(&N, &nrhs, A, &lda, ipiv, b, &ldb, &info);
if (info == 0) /* succeed */
printf("The solution is %lf %lf %lf\n", b[0], b[1], b[2]);
else
fprintf(stderr, "dgesv_ fails %d\n", info);
return info;
/*ctrl+f5でデバッグ*/