C ++ makefile问题,删除未使用的库

时间:2017-02-02 15:01:51

标签: c++ makefile

以下是我使用的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,那么编译就好了,但是包含了库。

1 个答案:

答案 0 :(得分:1)

您需要#include <algorithm>,这将包含在opencv标头中。

错误是说当前定义的remove()的唯一重载是删除文件的C,并且与参数不匹配。您正在寻找的基于迭代器的那个位于<algorithm>标题中。