2017-02-02 4 views
-1

Вот Makefile я использую:C++ Makefile проблема с удалением неиспользуемых LIBS

CFLAGS = `pkg-config --cflags opencv` 
LIBS = `pkg-config --libs opencv` 

% : %.cpp 
     g++ -lX11 -lcurl $(CFLAGS) $(LIBS) -o [email protected] $< 

Теперь мне не нужно больше OpenCV, удаление OpenCV из Makefile ISNT создает каких-либо проблем, однако если удалить Входящие в комплект OpenCV ЛИЭС

#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 

водослива d вещь компилируется просто отлично без opencv в makefile, но библиотеки включены.

+0

В чем проблема «компилятора»? Пожалуйста, предоставьте [mcve], по крайней мере, определенные ошибки, которые вы видите. – Barry

+0

KneckPrint.cpp: В функции 'std :: __ cxx11 :: string ProcessData (std :: __ cxx11 :: string)': KneckPrint.cpp: 33: 50: error: невозможно преобразовать 'std :: __ cxx11 :: basic_string : : iterator {aka __gnu_cxx :: __ normal_iterator >} 'to' const char * 'для аргумента' 1 'to' int remove (const char *) ' temp.erase (удалить (temp.begin(), temp.end(), '\\'), temp.end()); ^ make: *** [makefile: 5: KneckPrint] Ошибка 1 --- Я надеюсь, что это можно прочитать – user273032

+0

Эта ошибка не имеет ничего общего с opencv или make-файлами, вы просто передаете неправильные аргументы функции. – Barry

ответ

1

Вам необходимо указать #include <algorithm>, который будет включен в заголовки opencv.

Ошибка заключается в том, что единственная перегрузка remove(), определенная в настоящее время, является C, чтобы удалить файл, и это не соответствует аргументам. Итератор, который вы ищете, находится в заголовке <algorithm>.

+0

Спасибо! Это сводило меня с ума – user273032