簡體   English   中英

如何使CImg庫適用於Qt

[英]How to get the CImg library working for Qt

我目前正在學習如何使用Qt。 我想嘗試一些使用Qt的簡單圖像處理應用程序,並且由於我已經熟悉CImg,所以我想使用它。 我想應該可以這樣做,如果沒有將我的問題標記為刪除或其他的話。

我的問題是:如何使CImg為Qt工作? CImg是頭文件。 可以說它位於我的桌面上。 我使用Qt Creator 4.1.0導入它,方法是使用標題文件夾的右鍵菜單中的“添加現有文件...”。 然后我的菜單如下所示:

我在Qt中的項目文件夾

當我添加#include "CImg.h" ,它會編譯,但是我無法使用它,即使當我嘗試using namespace cimg_library鍵入using namespace cimg_library它也會告訴我cimg_library不存在。 我還嘗試僅創建一個頭文件並將CImg.h的內容復制到其中,但是隨后它只是無法編譯,並且Qt Creator凍結了。

編輯:通過將標頭位置添加到包含代碼中,我設法使情況更好(像這樣: #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;
}

我得到的編譯器錯誤是:錯誤:C2871:'cimg_library':具有該名稱的名稱空間不存在錯誤:C2065:'CImg':未聲明的標識符錯誤:C2062:類型為'unsigned char'的意外

我希望這足夠具體。

幾個月后,我發現了。 問題在於,CImg使用Windows .dll文件來實現cimg_display類的可視化功能。 由於Qt是平台無關的,所以它不是這樣。 但是,您可以使用一個有趣的技巧來使其工作。 首先,您通常需要在項目文件中包括頭文件。 此后,無論何時實際上#include它,您都需要編寫以下宏: #define cimg_display 0據我所知,它可以正常工作,因為C和C ++編譯器只是將包含文件的內容復制到源代碼中。 多虧了宏,編譯器將忽略對我們造成麻煩的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM