1
Visual Studio 2008でヒントの破損の問題がありました。私はWindows 7 64-bitで作業しています。FORTRAN lapackルーチンをインタフェースするときのパラメータの破損
これは私のF90プログラムで(F77)LAPACKサブルーチンの呼び出しです:これは、すべてのパラメータの値を期待デバッガショーを呼び出す前
call dgetrs('N', nbParams, one, a, nbParams, ipv, x, nbParams, err)
。 aとxはそれぞれサイズ(nbParams、nbParams)と(nbParams)を持つ2つの「割り当て可能な」変数を表します。
ただし、この行を実行した後に、実行違反が0x0000000000000001の場所で読み取られて実行が停止します。私はデバッグモードでlapackをコンパイルしているので、コールの中に入ることができますが、DGETRSの最初の文でTRANSが壊れてしまいます。
SUBROUTINE DGETRS(TRANS, N, NRHS, A, LDA, IPIV, B, LDB, INFO)
...
CHARACTER TRANS
INTEGER INFO, LDA, LDB, N, NRHS
...
INTEGER IPIV(*)
DOUBLE PRECISION A(LDA, *), B(LDB, *)
......
INFO = 0 **--> Now all input vars but TRANS are corrupted or dereferenced!**
私はすべてを試みましたが、問題を特定できません。誰かが私に問題の位置づけを教えてもらえますか?
ありがとうございました!
'dgetrs'の実際の引数の種類は何ですか? Lapackはパラメータ型の不一致を扱うのに穏やかではありません –
呼び出し側にあるvarsの宣言を追加できますか? –
整数nbParams、one、err;倍精度、ディメンション(:)、ポインタ:: x;倍精度、ディメンション(:, :)、allocatable :: x; allocate(x(nbParams)、stat = err);整数、次元(:)、allocatable :: ipv;次に、私は配列のためのメモリを割り当てます:allocate(a(nbParams、nbParams)、stat = err); allocate(ipv(nbParams)、stat = err); –