在 mingw 库中查找丢失的符号

Find missing symbols in mingw library

给定 ar 库和可能的目标文件,找到所有未解析的外部符号的最佳方法是什么?一种可能是 运行 链接器然后捕获错误,但有时它会在一定数量的符号后停止。有没有更好的方法?

在您的 mingw-w64 安装的 bin 目录中,连同 C 和 C++ 编译器、链接器和 make 工具,你应该 组成 GNU binutils.

的程序

其中几个(nmobjdumpreadelf)可以解析目标文件或共享或 静态库。使用最简单的可能是 nm。假设 bin 目录在您的 PATH 中,打开命令提示符 在包含您的库或目标文件的目录中 对 运行:

感兴趣
nm -u libfoo.a

或:

nm -u foo.obj

列出libfoo.afoo.obj中未定义的符号。

如果这些文件包含您想要查看的 C++ 符号,那么 将 -C 添加到 nm 选项。

这些工具都承认静态库libfoo.a只是 一个目标文件的存档,所以 nm ... libfoo.a 给你 结果与 libfoo.a 替换为对象列表相同 其中的文件。