1

lapack ライブラリを使用して行列乗算を行ったところ、次のようなエラーが発生しました。誰でも私を助けることができますか?

"error LNK2019: unresolved external symbol "void __cdecl dgemm(char,char,int *,int *,int *,double *,double *,int *,double *,int *,double *,double *,int *)" (?dgemm@@YAXDDPAH00PAN1010110@Z) referenced in function _main"
1>..\bin\matrixMultiplicationUsingLapack.exe : fatal error LNK1120: 1 unresolved externals

以下にコードを投稿します

    # define matARowSize 2      // -- Matrix 1 number of rows
    # define matAColSize 2      // -- Matrix 1 number of cols
    # define matBRowSize 2      // -- Matrix 2 number of rows
    # define matBColSize 2      // -- Matrix 2 number of cols

using namespace std;


   void dgemm(char, char, int *, int *, int *, double *, double *, int *, double *, int *,        double *, double *, int *);

    int main()
    {
    double iMatrixA[matARowSize*matAColSize];   // -- Input matrix 1   {m x n}
    double iMatrixB[matBRowSize*matBColSize];   // -- Input matrix 2   {n x k}
    double iMatrixC[matARowSize*matBColSize];   // -- Output matrix    {m x n * n x     k = m x k}

    double alpha = 1.0f;
    double beta = 0.0f;

    int n = 2;

    iMatrixA[0] = 1;
    iMatrixA[1] = 1;
    iMatrixA[2] = 1;
    iMatrixA[3] = 1;

    iMatrixB[0] = 1;
    iMatrixB[1] = 1;
    iMatrixB[2] = 1;
    iMatrixB[3] = 1;

    //dgemm('N','N',&n,&n,&n,&alpha,iMatrixA,&n,iMatrixB,&n,&beta,iMatrixC,&n);

    dgemm('N','N',&n,&n,&n,&alpha,iMatrixA,&n,iMatrixB,&n,&beta,iMatrixC,&n);

    std::cin.get();
    return 0;
}
4

3 に答える 3

0

コンパイラが関数定義を見つけられないため、リンカ エラーが発生します....

  • 関数の定義を書く必要があります。
  • または、ライブラリ内の関数定義の場合、.lib ファイルを

    ProjectProperty-->Linker-->Input-->AdditionalDependencies-->「Add here.lib」

于 2012-10-26T05:24:18.323 に答える
0

これは未解決の参照によるリンカ エラーです。あなたのmakeファイルを表示してください。ライブラリ名を最後に付けて、make ファイルを変更してみてください。例えば
gcc <program_name> lapack.a -o exec

于 2012-10-26T05:04:14.110 に答える
0

The Linker Error is basically telling you that it cannot find your function void dgemm(...).

If you look above your Main function, it seems like your void dgemm(...) function has no body.

The code that you put between the brackets represent the body of your function { }.

You should have something like this:

void dgemm(...)
{
    // Do stuff
}

That's why you are having the error.

于 2012-10-26T05:19:31.070 に答える