我希望在我当前的项目中使用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>)'
有没有人知道在Codegear C ++ Builder 2009中构建时是否应该使用#define
。或者它只是不兼容?
答案 0 :(得分:2)
一个包含在单个头文件中的40,000行库?这似乎是一个坏主意...
无论如何,遗憾的是,C ++ Builder 2009并不是一个非常好的C ++编译器,因此它通常无法处理其他合法的C ++构造。 (C ++编译器无法正确处理C ++标准的某个方面或其他方面并不罕见,因为C ++是一种如此复杂的语言。)
当发生这种情况时,您的主要选择是找到另一个库,找到另一个编译器,等待一个新的,希望更好的C ++ Builder版本,或尝试调整库以使其工作。
在这种情况下,如果您决定尝试使库工作,那么您应该开始以下更改:
template<typename t> CImg<t>& move_to(CImg<t>& img) {更简单
template<typename t> t& move_to(t& image) {
draw_text(...)
替换为draw_text<unsigned char,unsigned char>(...)
。
编译器错误多于这两个错误;您必须同样调整CImg源代码。
如果您能够完成所有工作,那么一旦完成,您就可以看到CImg项目是否有兴趣将您的更改合并到其正式版本中添加C ++ Builder支持。