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

链接器错误基本上是告诉您它找不到您的功能void dgemm(...)

如果您查看 Main 函数上方,您的函数似乎void dgemm(...)没有主体。

放在括号内的代码代表函数的主体{ }

你应该有这样的东西:

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

这就是您遇到错误的原因。

于 2012-10-26T05:19:31.070 回答
0

发生链接器错误是因为编译器找不到函数定义......

  • 要么你必须编写函数的定义。
  • 或者,如果库中的函数定义必须在

    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 回答