我希望在我的当前项目中使用CImg库进行图像处理。我正在使用Codegear C++ Builder2009。我在源文件中包括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
。还是不兼容? 最佳答案
一个头文件中包含40,000行的库?这似乎是个坏主意...
无论如何,不幸的是,C++ Builder 2009并不是一个很好的C++编译器,因此它通常无法处理其他合法的C++构造。 (对于C++编译器来说,仅仅因为C++是一种非常复杂的语言,而不能正确处理C++标准的一个方面或另一个方面并不稀奇。)
发生这种情况时,您的主要选择是找到另一个库,找到另一个编译器,等待新的并且希望是更好的C++ Builder版本,或者尝试调整该库以使其工作。
在这种情况下,如果您决定尝试使该库正常工作,那么以下更改应使您入门:
template
CImg &move_to(CImg &img){
更简单
template
t&move_to(t&图片){
帮助C++ Builder找出第39163行的draw_text调用的正确模板参数:用
draw_text(...)
替换draw_text<unsigned char,unsigned char>(...)
。除了这两个错误以外,还有更多的编译器错误。您必须同样地为这些调整CImg源代码。
如果您能够使所有功能正常运行,那么一旦完成,您就可以查看CImg项目是否有兴趣合并所做的更改,以将C++ Builder支持添加到其正式版本中。
关于c++ - CImg在Codegear 2009中编译问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2918225/