Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用xtensor进行线性代数时出现未解决的外部符号错误_C++_Visual Studio_Linker_Xtensor - Fatal编程技术网

C++ 使用xtensor进行线性代数时出现未解决的外部符号错误

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(在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/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。如何编译?