我的情况有点特殊:我有一个应用程序在使用 MSVC 编译时会编译、链接和启动。我现在正在重新编译它 clang-cl,这会导致它编译、链接和崩溃。
感谢 Dependency Walker,我发现正在加载意外的 DLL。就我而言,要找到std::allocator<char>::allocator(allocator const &)
.
有了这个,我目前有以下信息:
- 需要此符号的 DLL
- 暴露符号的 DLL
- 给出问题的符号
为了记录错误,我应该能够将代码减少到可接受的大小。上传整个专有代码库不是一种选择,上传一个 20 行的 .cpp 文件是一种选择。
为了减少,我需要找到需要这个符号的 .cpp/.obj 文件。从那里开始,减少它就变得容易了。
有了这个,我正在寻找一种方法来检测 .obj 文件是否在不同的 DLL 中搜索符号。
我已经发现:
- dumpbin /SYMBOLS:告诉我符号导出的位置
- dumpbin /DEPENDENTS:告诉我一个 DLL 依赖的 DLL
不转储导入函数的名称。
如何根据 .obj 文件转储导入函数的名称?