作者:朱金灿
来源:http://blog.youkuaiyun.com/clever101
在使用vs2013编写一个程序中同时使用boost库和Eigen库,出现一个编译错误:
错误 C2039 “setConstant”: 不是“Eigen::PlainObjectBase<Derived>”的成员 AlgoDefine d:\src\thirdpartylib\eigen\include\src\Core\CwiseNullaryOp.h
开始百思不得其解,后来想到可能是boost库和Eigen库存在一些定义冲突。开始是将boost库的包含头文件放在Eigen库包含头文件的前面,现在改为:
#include <Dense>
#include "Ublas.h"
#include <boost/numeric/ublas/vector_proxy.hpp>
#include <boost/numeric/ublas/triangular.hpp>
#include <boost/numeric/ublas/lu.hpp>
#include <boost/numeric/ublas/io.hpp>
再次编译就没有这个编译错误了。
在使用VS2013进行编程时,同时引入Boost库和Eigen库导致编译错误,具体为Eigen库的setConstant方法被误识别。通过调整包含头文件的顺序,先包含Eigen库的Dense头文件,再包含Boost库的相关头文件,成功解决了编译错误。
5064

被折叠的 条评论
为什么被折叠?



