Проблемы компиляции CImg в Codegear 2009 - PullRequest
1 голос
/ 27 мая 2010

Я хочу использовать библиотеку CImg для обработки изображений в моем текущем проекте. Я использую Codegear C ++ Builder 2009. Я включаю CImg.h в исходный файл и вставляю следующий код:

int rows =5;
int cols = 5;

CImg<double> img(rows,cols);

Я получаю следующую ошибку:

[BCC32 Error] CImg.h(39159): E2285 Could not find a match for 'CImg<unsigned char>::move_to<t>(const CImg<unsigned char>)'

Кто-нибудь знает, есть ли #define, который я должен использовать при сборке в Codegear C ++ Builder 2009. Или он просто не совместим?

1 Ответ

2 голосов
/ 27 мая 2010

40000 строк библиотеки, которая содержится в одном заголовочном файле? Это кажется плохой идеей ...

В любом случае, к сожалению, C ++ Builder 2009 не очень хороший компилятор C ++, поэтому он часто не сможет обрабатывать в противном случае допустимые конструкции C ++. (Для компиляторов C ++ нет ничего необычного в том, что они неправильно обрабатывают тот или иной аспект стандарта C ++, просто потому, что C ++ такой сложный язык.)

Когда это происходит, ваш основной выбор - найти другую библиотеку, найти другой компилятор, подождать новую и, как мы надеемся, лучшую версию C ++ Builder, или попробовать настроить библиотеку, чтобы она заработала.

В этом случае, если вы решите попробовать и заставить библиотеку работать, вам следует приступить к следующим изменениям:

  • Для шаблонной версии `move_to` (строка 9145 в CImg 1.3.4) C ++ Builder не может определить t как параметр шаблона для параметра` move_to`. Измените объявление функции из его текущей типобезопасной версии:
        template<typename t>
        CImg<t>& move_to(CImg<t>& img) {
    
    проще
        template<typename t>
        t& move_to(t& image) {
    
  • Помогите C ++ Builder выяснить правильные параметры шаблона для вызова draw_text в строке 39163: замените draw_text(...) на draw_text<unsigned char,unsigned char>(...).

Есть больше ошибок компилятора, чем только эти две; вам придется аналогичным образом настроить исходный код CImg для них.

Если вы можете заставить все работать, то, как только вы закончите, вы сможете увидеть, заинтересован ли проект CImg в внесении ваших изменений, чтобы добавить поддержку C ++ Builder в их официальный выпуск.

...