c++ - CImg 在 Codegear 2009 中编译问题

标签 c++ c++builder cimg

我希望使用 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/

相关文章:

C++11 lambdas 到函数指针

delphi - Delphi/C++Builder 的标签编辑器组件

opencv - 如何使用Cimg(或openCV或 Eigen 库)计算SVD?

c++ - 使用 CImg 编辑 RGB 像素数据 - Visual C++ 2008

C++/CImg 不一致的结果

c++ - 多播基础 - 丢失数据

c++ - 库达 : mix c++ and cuda code

c++ - 动态添加 QGraphicsEllipseItems

c++builder - C++ Builder,复制到剪贴板

Delphi编译错误E2064 左侧不能赋值给