gpt4 book ai didi

c++ - 如何让 CImg 库为 Qt 工作

转载 作者:行者123 更新时间:2023-11-28 01:58:02 26 4
gpt4 key购买 nike

我目前正在学习如何使用 Qt。我想使用 Qt 尝试一些简单的图像处理应用程序,因为我已经熟悉 CImg,所以我想使用它。我想应该可以这样做,如果不能将我的问题标记为删除或其他内容。

我的问题是:如何让 CImg 为 Qt 工作? CImg 是头文件。可以说它位于我的桌面上。我使用 Qt Creator 4.1.0 导入它,方法是在标题文件夹的右键菜单中使用“添加现有文件...”。然后我的菜单看起来像这样:

my project folder in qt .

它在我添加 #include "CImg.h" 时编译,但我无法使用它,即使我尝试键入 using namespace cimg_library 它会告诉我 cimg_library 不存在。我还尝试只创建一个头文件并将 CImg.h 的内容复制到其中,但它根本无法编译并且 Qt Creator 卡住。

编辑:我设法通过将 header 位置添加到包含代码(如下所示:#include "C:/Users/Marci/Desktop/CImg.h" )我现在可以在开发环境中“看到”与 CImg 相关的东西,并且不会因为找不到 CImg 的构造函数或类似的东西而困扰我。然而,当我尝试使用任何与 CImg 相关的东西进行编译时,它会给我大约 20 个链接器错误。 (错误代码:LNK2019)我的 .pro 文件如下所示:

#-------------------------------------------------
#
# Project created by QtCreator 2016-11-08T17:08:58
#
#-------------------------------------------------

QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = grayscale
TEMPLATE = app


SOURCES += main.cpp\
mainwindow.cpp

HEADERS += mainwindow.h \
C:/Users/Marci/Desktop/CImg.h

LIBS += -C:/Users/Marci/Desktop/ -CImg.h

FORMS += mainwindow.ui

Edit2:实现 PeterT 在他的评论中建议的更改后,我的 .pro 文件如下所示:

#-------------------------------------------------
#
# Project created by QtCreator 2016-11-08T17:08:58
#
#-------------------------------------------------

QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = grayscale
TEMPLATE = app


SOURCES += main.cpp\
mainwindow.cpp

HEADERS += mainwindow.h \


INCLUDEPATH += C:/Users/Marci/Desktop

FORMS += mainwindow.ui

我的 mainwindow.cpp(我试图在其中创建一个 CImg 对象)如下所示:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <CImg.h>

using namespace cimg_library;


MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

CImg<unsigned char> myimage(100,200);
}

MainWindow::~MainWindow()
{
delete ui;
}

我得到的编译器错误是:error: C2871: 'cimg_library': a namespace with this name does not exist错误:C2065:“CImg”:未声明的标识符错误:C2062:意外键入“unsigned char”

我希望这足够具体。

最佳答案

几个月后我想通了。问题在于,CImg 使用 windows .dll 文件来实现类 cimg_display 的可视化功能。由于 Qt 是独立于平台的,所以它不喜欢这样。但是,您可以使用一个有趣的技巧使其工作。首先,您需要在项目文件中正常包含头文件。之后,无论何时你真正#include它,你都需要编写下面的宏:#define cimg_display 0以我的理解,这使它起作用,因为 C 和 C++ 编译器只是将包含文件的内容复制到源代码中。多亏了这个宏,编译器会忽略给我们带来麻烦的类。

关于c++ - 如何让 CImg 库为 Qt 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com