Qt5、MinGW、log4cxx との連携を試みて 2 日目です。
すべてを正常にコンパイルした後でも、apr、apr-util、および log4cxx ライブラリをリンクするとld
、「未定義の参照」の問題が多数発生します。
log4cxxのコンパイル中に別の設定が指定されたようです(私はantを使用しています)。Log4cxx を MinGW で正常にコンパイルして使用できた人はいますか?
環境:
- log4cxxトランク
- 4 月 1.4.6
- apr-util 1.5.2
- 最新のMinGW
- Qt 5 と最新の MinGW をコンパイラとして使用しています
私がやったこと:
- 次のコマンドでantを使用してlog4cxxをコンパイルしました:「ant -Dcompiler = gcc -Dfind = false -DLOG4CXX_STATIC = 1 -Dlib.type = static」
- pro ファイルのプロジェクトに結果ライブラリを追加しました: "LIBS += -L../log4cxx/lib LIBS += -llibapr-1 -llibaprutil-1 -lliblog4cxx"
そして今、プロジェクトをリンクしようとすると、次の結果が得られます。
*C:/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'C:/Work/SPP_Development/AutoHaul/Sub-systems/TCS/Source/build-SimulatorEngine-Standalone_MinGW-Debug'
g++ -Wl,-subsystem,windows -mthreads -o debug\SimulatorEngine.exe object_script.SimulatorEngine.Debug -lmingw32 -lqtmaind -L../log4cxx/lib -llibapr-1 -llibaprutil-1 -lliblog4cxx -LC:\Qt\Qt5.0.1\5.0.1\mingw47_32\lib -lQt5XmlPatternsd -lQt5Widgetsd -lQt5Networkd -lQt5Xmld -lQt5Guid -lQt5Cored -llibEGLd -llibGLESv2d -lgdi32 -luser32
Makefile.Debug:200: recipe for target 'debug\SimulatorEngine.exe' failed
mingw32-make[1]: Leaving directory 'C:/Work/SPP_Development/AutoHaul/Sub-systems/TCS/Source/build-SimulatorEngine-Standalone_MinGW-Debug'
Makefile:34: recipe for target 'debug' failed
../log4cxx/lib/liblog4cxx.lib(mutex.o): In function `ZN7log4cxx7helpers5MutexC2ERNS0_4PoolE':
c:/Work/log4cxx/apache-log4cxx-trunc/src/main/cpp/mutex.cpp:35: undefined reference to `apr_thread_mutex_create@12'
../log4cxx/lib/liblog4cxx.lib(mutex.o): In function `ZN7log4cxx7helpers5MutexC2EP10apr_pool_t':
c:/Work/log4cxx/apache-log4cxx-trunc/src/main/cpp/mutex.cpp:45: undefined reference to `apr_thread_mutex_create@12'
../log4cxx/lib/liblog4cxx.lib(mutex.o): In function `ZN7log4cxx7helpers5MutexD2Ev':
c:/Work/log4cxx/apache-log4cxx-trunc/src/main/cpp/mutex.cpp:55: undefined reference to `apr_thread_mutex_destroy@4'*
log4cxx ライブラリは、何らかの理由で apr ライブラリで宣言および定義された関数を見つけることができないようです。
なぜこれが起こっているのかを確認するために、問題をさらに分析する方法はありますか?