这是我尝试与 Qt5、MinGW 和 log4cxx 结婚的第二天。
即使在我成功编译所有内容之后,链接的 apr、apr-util 和 log4cxx 库也会ld
给我带来一堆“未定义的引用”问题。
看起来在 log4cxx 编译期间指定了不同的设置(我使用的是 ant)。有没有人能够成功编译并使用带有 MinGW 的 log4cxx?
环境:
- log4cxx 主干
- 4 月 1.4.6
- 四月实用程序 1.5.2
- 最新的 MinGW
- 我正在使用带有最新 MinGW 的 Qt 5 作为编译器
我做了什么:
- 使用 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 库中声明和定义的函数。
有没有办法进一步分析问题,看看为什么会这样?