0

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 およびアセンブリ要素の作業に非常にイライラしています。

4

2 に答える 2

0

Cimg ライブラリを GUI プログラムにリンクする必要があります。ライブラリを .pro ファイルに追加します。

LIBS += -L$PATH_TO_CIMG_LIB -l$CIMG_LIB
于 2012-07-26T02:00:25.560 に答える
0

cimg ヘッダー ファイルを静的ライブラリにコンパイルして (libs+=...youtstaticlibrary) を使用してみてください

静的ライブラリにコンパイルする手順。CIMG_LIB プロジェクト (コンソール プロジェクト) (または任意の名前) を作成し、ソース ファイルに cimg ヘッダーを含めます。ソース コードで名前空間 cimg_library を使用します (ここには何も追加しないでください) プロジェクトを静的ライブラリにコンパイルします

--> プロジェクトに qt インクルード ヘッダー ファイルを使用して GUI プロジェクトを作成し、以前に作成したライブラリを追加します。

于 2013-01-29T09:24:58.227 に答える