Qt Creator 2.4.1中与CImg库相关的链接器错误

时间:2012-07-25 20:16:55

标签: qt qmake cimg

我使用CImg库编写了一个小图像处理算法,并使用Visual C ++ Express将其捆绑在命令行应用程序中。所有编译都没有错误并运行良好,直到负责该项目的工程师决定他想要一个GUI。所以我去了Qt和Qt的创造者。 GUI本身运行良好,但当我移动图像处理算法时,所有地狱都会松动。

mainwindow.obj : error LNK2019: unresolved external 
symbol__imp__SHGetSpecialFolderPathA@16 referenced in function "char const * __cdecl 
cimg_library::cimg::programfiles_path(char const * const,bool)" 
(?programfiles_path@cimg@cimg_library@@YAPBDQBD_N@Z)

mainwindow.obj : error LNK2019: unresolved external symbol 
__imp__EnumDisplaySettingsW@12 referenced in function "public: static int __cdecl  
cimg_library::CImgDisplay::screen_width(void)" 
(?screen_width@CImgDisplay@cimg_library@@SAHXZ)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__DestroyWindow@4    
referenced in function "public: struct cimg_library::CImgDisplay & __thiscall  
cimg_library::CImgDisplay::assign(void)" 
(?assign@CImgDisplay@cimg_library@@QAEAAU12@XZ)

mainwindow.obj : error LNK2019: unresolved external symbol   
__imp__ChangeDisplaySettingsW@8 referenced in function "public: void __thiscall 
cimg_library::CImgDisplay::_desinit_fullscreen(void)" 
(?_desinit_fullscreen@CImgDisplay@cimg_library@@QAEXXZ)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__SetWindowPos@28 
referenced in function "public: struct cimg_library::CImgDisplay & __thiscall 
cimg_library::CImgDisplay::resize(int,int,bool)" 
(?resize@CImgDisplay@cimg_library@@QAEAAU12@HH_N@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__AdjustWindowRect@12 
referenced in function "public: struct cimg_library::CImgDisplay & __thiscall 
cimg_library::CImgDisplay::resize(int,int,bool)" 
(?resize@CImgDisplay@cimg_library@@QAEAAU12@HH_N@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__DispatchMessageW@4 
referenced in function "public: static unsigned long __stdcall 
cimg_library::CImgDisplay::_events_thread(void *)" 
(?_events_thread@CImgDisplay@cimg_library@@SGKPAX@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__GetMessageW@16 
referenced in function "public: static unsigned long __stdcall 
cimg_library::CImgDisplay::_events_thread(void *)" 
(?_events_thread@CImgDisplay@cimg_library@@SGKPAX@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__SetWindowLongW@12 
referenced in function "public: static unsigned long __stdcall 
cimg_library::CImgDisplay::_events_thread(void *)" 
(?_events_thread@CImgDisplay@cimg_library@@SGKPAX@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__GetDC@4 referenced 
in function "public: static unsigned long __stdcall  
cimg_library::CImgDisplay::_events_thread(void *)" 
(?_events_thread@CImgDisplay@cimg_library@@SGKPAX@Z)

mainwindow.obj : error LNK2019: unresolved external symbol 
__imp__SetForegroundWindow@4 referenced in function "public: static unsigned long 
__stdcall cimg_library::CImgDisplay::_events_thread(void *)" 
(?_events_thread@CImgDisplay@cimg_library@@SGKPAX@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__GetWindowRect@8 
referenced in function "public: static unsigned long __stdcall 
cimg_library::CImgDisplay::_events_thread(void *)" 
(?_events_thread@CImgDisplay@cimg_library@@SGKPAX@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__CreateWindowExA@48 
referenced in function "public: static unsigned long __stdcall 
cimg_library::CImgDisplay::_events_thread(void *)" 
(?_events_thread@CImgDisplay@cimg_library@@SGKPAX@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__DefWindowProcW@16 
referenced in function "public: static long __stdcall 
cimg_library::CImgDisplay::_handle_events(struct HWND__ *,unsigned int,unsigned 
int,long)" (?_handle_events@CImgDisplay@cimg_library@@SGJPAUHWND__@@IIJ@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__ShowCursor@4 
referenced in function "public: static long __stdcall 
cimg_library::CImgDisplay::_handle_events(struct HWND__ *,unsigned int,unsigned 
int,long)" (?_handle_events@CImgDisplay@cimg_library@@SGJPAUHWND__@@IIJ@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__TrackMouseEvent@4 
referenced in function "public: static long __stdcall 
cimg_library::CImgDisplay::_handle_events(struct HWND__ *,unsigned int,unsigned 
int,long)" (?_handle_events@CImgDisplay@cimg_library@@SGJPAUHWND__@@IIJ@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__PeekMessageW@20 
referenced in function "public: static long __stdcall 
cimg_library::CImgDisplay::_handle_events(struct HWND__ *,unsigned int,unsigned 
int,long)" (?_handle_events@CImgDisplay@cimg_library@@SGJPAUHWND__@@IIJ@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__ShowWindow@8 
referenced in function "public: static long __stdcall 
cimg_library::CImgDisplay::_handle_events(struct HWND__ *,unsigned int,unsigned 
int,long)" (?_handle_events@CImgDisplay@cimg_library@@SGJPAUHWND__@@IIJ@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__GetWindowLongW@8 
referenced in function "public: static long __stdcall 
cimg_library::CImgDisplay::_handle_events(struct HWND__ *,unsigned int,unsigned 
int,long)" (?_handle_events@CImgDisplay@cimg_library@@SGJPAUHWND__@@IIJ@Z)

mainwindow.obj : error LNK2019: unresolved external symbol __imp__SetDIBitsToDevice@48 
referenced in function "public: struct cimg_library::CImgDisplay & __thiscall 
cimg_library::CImgDisplay::paint(void)" (?paint@CImgDisplay@cimg_library@@QAEAAU12@XZ)

debug\final.exe : fatal error LNK1120: 20 unresolved externals

NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC  
\BIN\link.EXE"' : return code '0x460'

Stop.

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC  
\BIN\nmake.exe"' : return code '0x2'

Stop.

我现在的问题是,我不知道为什么我有链接器问题。 CImg库是单个H文件。它是项目的一部分,包括在内。我知道Qt Creator需要将库添加到项目文件中,但有什么要添加的?我的库已列在标题下。

这是项目文件。

QT       += core gui

TARGET = final
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h \
    C:/includes/CImg.h

FORMS    += mainwindow.ui

INCLUDEPATH += C:\includes\

感谢您的帮助,我主要是一名嵌入式系统程序员,而且我的C和汇编元素正在变得非常令人沮丧。

2 个答案:

答案 0 :(得分:0)

您需要将Cimg库链接到GUI程序。在.pro文件中添加库。

LIBS += -L$PATH_TO_CIMG_LIB -l$CIMG_LIB

答案 1 :(得分:0)

尝试将cimg头文件编译为静态库 并使用(libs + = ... youtstaticlibrary)我使用visual studio,所以我无法帮助你如何将库添加到qt,想出你自己。

编译到静态库的步骤  例如。创建CIMG_LIB项目(控制台项目)(或您喜欢的任何名称) 并在您的源文件中包含cimg标头。 在源代码中使用命名空间cimg_library(不要在这里添加任何其他内容) 将项目编译为静态库

- >用qt创建GUI项目 在项目中包含头文件 添加您之前创建的库.. 你很高兴。