如何在Eigen中使用Matrix类型参数声明一个函数?

时间:2018-01-10 19:15:35

标签: c++ eigen

我写了以下代码。在此代码中,我在buildscript { ... } apply plugin: 'kotlin-platform-common' repositories { mavenCentral() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version" testCompile "org.jetbrains.kotlin:kotlin-test-annotations-common:$kotlin_version" testCompile "org.jetbrains.kotlin:kotlin-test-common:$kotlin_version" compile project(':demo-js') compile project(':demo-jvm') } 中声明了func

foo.h

所以,在#pragma once #include "stdafx.h" #include <vector> #include <opencv2\opencv.hpp> #include <Eigen> void func(std::vector<int>, cv::Mat_<float>, Eigen::Matrix<float, Dynamic, Dynamic, RowMajor>&, Eigen::VectorXf&);

foo.cpp

但我有以下错误:

#include "stdafx.h" #include "foo.h" #include <vector> #include <opencv2\opencv.hpp> #include <Eigen> using namespace std; using namespace cv; using namespace Eigen; void func(std::vector<int> gnd, cv::Mat_<float> _data, Eigen::Matrix<float, Dynamic, Dynamic, RowMajor> &A, Eigen::VectorXf &B) { //some code }

'Dynamic': undeclared identifier

'RowMajor': undeclared identifier

'_Rows': invalid template argument for 'Eigen::Matrix', expected compile-time constant expression

'_Cols': invalid template argument for 'Eigen::Matrix', expected compile-time constant expression

如何修复此代码?

1 个答案:

答案 0 :(得分:0)

我自己拿到了!我必须在Eigen之前添加名称空间Dynamic,在RowMajor添加foo.h

void func(std::vector<int>, cv::Mat_<float>, Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>&, Eigen::VectorXf&);