所以我玩了一个 DLL (UnityEditor.dll) 我想获取这个托管 DLL 中所有非托管函数的列表(dll 可能由本机 C++ 组成(如果使用的话,使用静态编译的库)核心和托管C++ 包装器全部包装到一个 dll 中。)我想获取该 Dll 中所有非托管函数的列表,例如创建我自己的托管\非托管包装器?
问问题
18629 次
3 回答
13
dumpbin.exe
Visual Studio 附带的实用程序可用于显示导出列表。例如:
dumpbin.exe /EXPORTS C:\WINDOWS\System32\Kernel32.dll
示例输出:
Microsoft (R) COFF/PE 翻车机版本 10.00.30319.01 版权所有 (C) 微软公司。版权所有。 转储文件 C:\Windows\System32\kernel32.dll 文件类型:DLL 部分包含 KERNEL32.dll 的以下导出 00000000 个特征 4E20FBA0 时间日期戳 Sat Jul 16 03:46:56 2011 0.00 版本 1 个序数基数 1390个功能 1390个名字 序号提示 RVA 名称 1 0 AcquireSRWLockExclusive(转发到 NTDLL.RtlAcquireSRWLockExclusive) 2 1 AcquireSRWLockShared(转发到 NTDLL.RtlAcquireSRWLockShared) 3 2 00004440 激活ActCtx 4 3 00066B80 添加原子 5 4 00066B20 AddAtomW 6 5 0006ADF0 添加控制台别名A 7 6 0006AE60 添加控制台别名W
于 2012-07-25T20:21:44.157 回答
2
打开 .dll 文件并使用Microsoft 提供的二进制 PE/COFF 规范查找此 PE 文件的 EXPORT 部分。
但我认为那是矫枉过正。你的问题应该是一个具体的需求。你到底想包装什么,你有什么?只有二进制文件,没有源/头文件?
于 2012-07-25T20:22:34.223 回答
2
DLL 不包含“函数”。它们包含代码和入口点。除非您有调试数据库,否则无法从优化代码中分辨出函数之间发生转换的位置。
于 2012-07-25T20:40:08.183 回答