C++ 使用xtensor进行线性代数时出现未解决的外部符号错误
我正在尝试使用xtensor(在Visual Studio中)在C++ 使用xtensor进行线性代数时出现未解决的外部符号错误,c++,visual-studio,linker,xtensor,C++,Visual Studio,Linker,Xtensor,我正在尝试使用xtensor(在Visual Studio中)在xtensor中使用linalg::eigvals()查找xarray的特征值。下面是一个我正在努力实现的简单程序: #include <iostream> #include "xtensor/xarray.hpp" #include "xtensor/xio.hpp" #include "xtensor/xmath.hpp" #include "xtensor/xview.hpp" #include "xtensor/
xtensor
中使用linalg::eigvals()
查找xarray的特征值。下面是一个我正在努力实现的简单程序:
#include <iostream>
#include "xtensor/xarray.hpp"
#include "xtensor/xio.hpp"
#include "xtensor/xmath.hpp"
#include "xtensor/xview.hpp"
#include "xtensor/xcomplex.hpp"
#include "xtensor-blas/xlinalg.hpp"
using namespace std;
using namespace xt;
int main()
{
auto test = empty<double>({ 5,5 });
auto test1 = ones_like(test);
xarray<complex<double>> eig = linalg::eigvals(test1);
return 0;
}
#包括
#包括“xtensor/xarray.hpp”
#包括“Xtenor/xio.hpp”
#包括“xtensor/xmath.hpp”
#包括“xtensor/xview.hpp”
#包括“xtensor/xcomplex.hpp”
#包括“Xtenor blas/xlinalg.hpp”
使用名称空间std;
使用名称空间xt;
int main()
{
自动测试=空({5,5});
自动测试1=类似的(测试);
xarray eig=linalg::eigvals(测试1);
返回0;
}
它一直工作到xarray
行
但是当它到达那一行时,我得到了一个错误:
FileName.obj : error LNK2019: unresolved external symbol _dgeev_ referenced in function "int __cdecl
cxxlapack::geev<int>(char,char,int,double *,int,double *,double *,double *,int,double *,int,double
*,int)" (??$geev@H@cxxlapack@@YAHDDHPANH000H0H0H@Z)
FileName.obj:错误LNK2019:函数“int”cdecl中引用了未解析的外部符号
cxxlapack::geev(char,char,int,double*,int,double*,double*,double*,int,double*,int,double
*,int)“(??”$geev@H@cxxlapack@@YAHDDHPANH000H0H0H@Z)
我已经尝试了
Properties->Linker->Additional Library dependencies
,并添加了C:\…\Debug\FileName.obj
,它给出了相同的错误 看起来您调用的函数与链接到的外部函数的定义不匹配。有更多的代码吗?cpp文件中没有更多的代码。我专门制作了这个小样本来隔离问题,它位于xarray线中。如果我对该行进行注释,代码将运行。我认为您已接近尝试将C:\…\Debug\FileName.obj
添加到链接器中。尝试查找文件FileName.lib
,然后添加该文件。请注意,.obj
文件在链接器包括中不需要;它们是生成时生成的中间编译文件.lib
文件包含函数定义,在使用跨语言库(如带c++的xtensor)时,函数定义尤为重要。您是否链接了LAPACK lib?如果您使用CMake构建项目,则需要找到LAPACK,然后链接到target_link_库(targetpro${BLAS_库}${LAPACK_库})。也许,你也需要分享你的CMake文件。就像@GioR说的,你似乎没有链接到LAPACK。如何编译?