Eigen2使用注意事项

来源:互联网 发布:centos 拼音输入法rpm 编辑:程序博客网 时间:2024/05/20 11:28

Eigen提供了向量和矩阵运算的一套功能,提供开源源码,无需编译,其实现文件是.hxx和.cxx,以及一些.h文件。可以通过简单的控制台程序使用它,没有任何问题。但是将其集成到MFC中时,遇到了一个大问题:

我使用的是Eigen2,被一个机器人运动学算法库orocos-kdl调用,编译时报错:max和min函数发生冲突。

定位到Eigen\Core的第300多行:大意是如果已经定义了windows中的max()和min()函数

#error ... 请使用预编译#define NOMAXMIN来取消max()min()宏


解决方法:

1. VS工程属性——C/C++——预编译头,添加NOMAXMIN;

2. 在使用到Eigen2的文件中添加:

   #ifndef NOMAXMIN

   #define NOMAXMIN

   #endif


另外,KDL中使用的命名空间的某些函数,如KDL::cos(), KDL::sin(), 和std::cos(), std::sin(),使用时要区分;在同一个cpp文件中,最好不要同时使用

using namespace std;

using namespace KDL;


而应当写成:

#include <cmath>


std::cos(para) z或者KDL::cos(para)


即在使用的时候注明命名空间,避免命名空间的混用



0 0