2016-11-09 1 views
0

현재 Qt 사용법을 배우고 있습니다. Qt를 사용하는 간단한 이미지 처리 응용 프로그램을 시험해보고 싶습니다. 이미 CImg에 익숙하므로 사용하고 싶습니다. 나는 삭제 또는 무언가를 위해 나의 질문을 표시하지 않으면 그렇게 할 수 있어야한다고 생각한다.Qt에서 CImg 라이브러리를 사용하는 방법

내 질문은 : 얻는 방법 CImg Qt에서 작동합니까? CImg은 헤더 파일입니다. 말하면 내 바탕 화면에 있습니다. Qt 생성자 4.1.0을 사용하여 헤더 파일의 오른쪽 클릭 메뉴에있는 "기존 파일 추가 ..."를 사용하여 가져옵니다. 그럼 내 메뉴는 다음과 같습니다 :

my project folder in qt.

#include "CImg.h"을 추가하면 컴파일되지만, using namespace cimg_library을 입력하려고해도 사용할 수 없으므로 cimg_library가 존재하지 않는다고 알려줍니다. 또한 헤더 파일을 만들고, CImg.h의 내용을 복사하려고했지만 컴파일이 실패하고 Qt Creator가 정지합니다.

편집 : 다음과 같이 포함 코드에 헤더 위치를 추가하여 상황을 좀 더 개선 할 수있었습니다 (예 : #include "C:/Users/Marci/Desktop/CImg.h"). dev 환경에서 CImg 관련 항목을 "볼 수"있습니다. CImg 또는 그와 비슷한 것에 대한 생성자를 찾지 못했습니다. 그러나 CImg과 관련된 모든 것을 사용하면서 컴파일하려고하면 약 20 개의 링커 오류가 발생합니다. (오류 코드 : LNK2019) :

#------------------------------------------------- 
# 
# 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가 : 내 .PRO 파일은 다음과 같습니다 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'유형이 예기치 않음

이 내용이 충분히 구체적이기를 바랍니다.

+1

[Qt Creator 프로젝트에 외부 라이브러리 추가하기] (http://stackoverflow.com/questions/718447/adding-external-library-into-qt-creator-project) – hyde

+0

중복 된 문제를 해결합니다. 그렇지 않으면 명확한 오류 메시지를 추가하고 .pro 파일을 표시하는 등 명확히하십시오. – hyde

+0

참조 된 질문의 표기법을 이해할 수 없습니다. 그것이 나의 중복인데도 나는 아직도 그것을 이해하지 못하므로 대답이 필요합니다. 그 질문에 쓰여진 것들을 구현하려고 시도한 후에 나의 .pro 파일은 다음과 같습니다 : http://pastebin.com/ZY7qwaK4. "using namespace cimg_library"를 입력 할 때 나타나는 오류 메시지는 다음과 같습니다. 오류 : C2871 : 'cimg_library':이 이름의 네임 스페이스가 없습니다. –

답변

2

몇 달 후에 나는 그것을 알아 냈습니다. 문제는 CImg이 cimg_display 클래스의 시각화 기능에 Windows .dll 파일을 사용한다는 사실에 있습니다. Qt는 플랫폼 독립적이기 때문에 Qt는 이렇게하지 않습니다. 그러나 당신은 흥미로운 트릭과 함께 작동하도록 할 수 있습니다. 먼저 헤더 파일을 프로젝트 파일에 포함시켜야합니다. 그 후에 #include 할 때마다 다음과 같은 매크로를 작성해야합니다. #define cimg_display 0 C 및 C++ 컴파일러는 포함 된 파일의 내용을 소스로 간단하게 복사하기 때문에이 기능이 작동합니다. 그리고 매크로 덕분에 컴파일러는 우리에게 문제를 일으키는 클래스를 무시할 것입니다.

관련 문제