我希望使用 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 中构建时使用。还是它根本不兼容?
最佳答案
一个包含在单个头文件中的 40,000 行库?这似乎是个坏主意......
无论如何,不幸的是,C++Builder 2009 不是一个很好的 C++ 编译器,因此它通常无法处理其他合法的 C++ 构造。 (C++ 编译器无法正确处理 C++ 标准的某个方面并不罕见,只是因为 C++ 是一种如此复杂的语言。)
发生这种情况时,您的主要选择是寻找另一个库,寻找另一个编译器,等待新的且希望更好的 C++Builder 版本,或者尝试调整库以使其工作。
在这种情况下,如果您决定尝试让该库正常工作,则应进行以下更改:
- 对于 `move_to` 的模板版本(CImg 1.3.4 中的第 9145 行),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 为第 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/