OpenCV和Boost文件系统之间的冲突

时间:2013-01-22 14:13:07

标签: c++ opencv boost mingw

我遇到了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

此致 路易斯

1 个答案:

答案 0 :(得分:1)

我建议您删除该部分:

using namespace std;
using namespace cv;
using namespace boost::filesystem;

并在代码中使用范围运算符 ::

Here's an example这两种不同的模式。