C++ 使用高级构造函数将数组转换为犰狳向量

C++ 使用高级构造函数将数组转换为犰狳向量,c++,armadillo,C++,Armadillo,我正在尝试将ODE_vector类型的对象转换为犰狳vec,这样新对象将继承犰狳库的线性代数功能。作为这个问题的一个简单例子,我用C++数组演示: #include <iostream> #include <random> #include <armadillo> using namespace std; using namespace arma; int main() { double b1 = 0.2; double b2 = 0.1; const

我正在尝试将ODE_vector类型的对象转换为犰狳vec,这样新对象将继承犰狳库的线性代数功能。作为这个问题的一个简单例子,我用C++数组演示:

#include <iostream>
#include <random>
#include <armadillo>

using namespace std;
using namespace arma;

int main() {

double b1 = 0.2;
double b2 = 0.1;
const double state[2] = {b1, b2};

rowvec B(&state[0], 2);
cout << B << endl;

mat A(2,2); A.fill(0.2); A.diag().ones();
cout << A << endl;

cout << B(0) * A(0,0) << endl;    // x

return 0;

}
但是,如果我将上面的x行替换为

cout << B * A << endl;

cout您需要在乘法中使用正确的格式。B型为2x1,a型为2x2。改为

mat B(&state[0], 1,2);


我希望事情能这么简单!!我尝试过犰狳类的各种组合,但这并不能解决问题。我将编辑此问题以避免混淆,并感谢您的建议。您确定在您的构建中启用了BLAS吗?对我来说,上面“x”行的两个备选方案效果很好。你说得对!它没有正确链接,这是一个CMake问题。。。如果其他人有类似问题,请查看此链接:谢谢帮助!!
[ 50%] Building CXX object CMakeFiles/untitled.dir/main.cpp.o
[100%] Linking CXX executable untitled
CMakeFiles/untitled.dir/main.cpp.o: In function `void arma::blas::gemv<double>(char const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)':
/usr/include/armadillo_bits/wrapper_blas.hpp:36: undefined reference to `wrapper_dgemv_'
CMakeFiles/untitled.dir/main.cpp.o: In function `void arma::blas::gemm<double>(char const*, char const*, int const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)':
/usr/include/armadillo_bits/wrapper_blas.hpp:71: undefined reference to `wrapper_dgemm_'
collect2: error: ld returned 1 exit status
CMakeFiles/untitled.dir/build.make:94: recipe for target 'untitled' failed
make[3]: *** [untitled] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/untitled.dir/all' failed
make[2]: *** [CMakeFiles/untitled.dir/all] Error 2
CMakeFiles/Makefile2:79: recipe for target 'CMakeFiles/untitled.dir/rule' failed
make[1]: *** [CMakeFiles/untitled.dir/rule] Error 2
Makefile:118: recipe for target 'untitled' failed
make: *** [untitled] Error 2
mat B(&state[0], 1,2);
rowvec B(&state[0], 2);