我最终会尝试构建和利用使用 MinGW 构建的 log4cxx 库。我已经用 MSYS2 和 MinGW 构建了它。但是,当我尝试使用(链接)它时,我得到了一堆 apr 函数的未定义引用链接器错误,例如:
ld.exe: ../msys64/mingw64/lib/liblog4cxx.a(loggingevent.o):loggingevent.c:(.text+0xbcf): 未定义引用`__imp_apr_snprintf'
ld.exe: ../msys64/mingw64/lib/liblog4cxx.a(loggingevent.o):loggingevent.c:(.text+0xe20): 未定义引用`__imp_apr_time_now'
这很奇怪,因为我正在链接到 libapr-1.dll.a,它是我从 MSYS2 包中获得的: https://packages.msys2.org/package/mingw-w64-x86_64-apr?repo=mingw64
然后我使用 nm 列出了 libapr-1.dll.a 中的符号,发现这些符号都有类型“I”,根据 nm 文档,这意味着 indirect reference to symbol。例如:
d000388.o:
0000000000000000 I __imp_apr_snprintf
U _head_libapr_1_0_dll
0000000000000000 T apr_snprintf
我的问题是,这个“间接”引用是什么意思,或者最终,链接器需要什么才能找到所有这些符号?谢谢。