以下是我使用的makefile:
CFLAGS = `pkg-config --cflags opencv`
LIBS = `pkg-config --libs opencv`
% : %.cpp
g++ -lX11 -lcurl $(CFLAGS) $(LIBS) -o $@ $<
现在我不再需要opencv,从makefile中删除opencv不会产生任何问题,但是如果我删除包含的opencv libs
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
同样,我收到以下编译器错误:
KneckPrint.cpp: In function ‘std::__cxx11::string ProcessData(std::__cxx11::string)’:
KneckPrint.cpp:33:50: error: cannot convert ‘std::__cxx11::basic_string<char>::iterator {aka __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >}’ to ‘const char*’ for argument ‘1’ to ‘int remove(const char*)’ temp.erase(remove(temp.begin(), temp.end(), '\\'), temp.end());
make: *** [makefile:5: KneckPrint] Error 1
奇怪的是,如果makefile中没有opencv,那么编译就好了,但是包含了库。
答案 0 :(得分:1)
您需要#include <algorithm>
,这将包含在opencv标头中。
错误是说当前定义的remove()
的唯一重载是删除文件的C,并且与参数不匹配。您正在寻找的基于迭代器的那个位于<algorithm>
标题中。