我遇到了Boost库的问题,特别是与OpenCV一起使用时的文件系统。显然问题类似于Conflict between Boost, OpenCV and Eigen libraries?中描述的问题。在该特定情况下,通过在“using namespace”语句前面加上所有“#include”语句来解决问题。就我而言,这是从一开始就以这种方式完成的。
我正在使用OpenCV 2.4.3和Boost 1.48(已经尝试过1.52具有相同的问题)。编程使用Eclipse CPP插件和MinGW在Windows 7(64位)中完成。
在尝试构建程序时,我收到以下错误:
C:\Boost\boost_1_48_0/boost/type_traits/decay.hpp:28:66: error: 'cvflann::<anonymous enum>' is/uses anonymous type
C:\Boost\boost_1_48_0/boost/type_traits/decay.hpp:28:66: error: trying to instantiate 'template<class T> struct boost::remove_reference'
C:\Boost\boost_1_48_0/boost/type_traits/decay.hpp:38:17: error: 'cvflann::<anonymous enum>' is/uses anonymous type
C:\Boost\boost_1_48_0/boost/type_traits/decay.hpp:38:17: error: trying to instantiate 'template<class T> struct boost::remove_reference'
在我的例子中,using namespace语句位于include语句之后:
#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <vector>
#include <boost/filesystem.hpp>
#include <boost/multi_index_container.hpp>
using namespace std;
using namespace cv;
using namespace boost::filesystem;
如何解决这个问题的任何想法将不胜感激:D:D:D
此致 路易斯
答案 0 :(得分:1)
我建议您删除该部分:
using namespace std;
using namespace cv;
using namespace boost::filesystem;
并在代码中使用范围运算符 ::
。
Here's an example这两种不同的模式。