所以我玩一个DLL(UnityEditor.dll)我想得到这个托管DLL内部所有非托管函数的列表(dll可能是由本机C ++组成的(如果使用了静态编译的库,则使用静态编译的库)核心和托管的C ++包装器都包装在一个dll中。)我想获得该Dll中所有非托管函数的列表,例如创建我自己的托管\非托管包装器?
答案 0 :(得分:10)
Visual Studio附带的dumpbin.exe
实用程序可用于显示导出列表。例如:
dumpbin.exe / EXPORTS C:\ WINDOWS \ System32 \ Kernel32.dll
示例输出:
Microsoft (R) COFF/PE Dumper Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file C:\Windows\System32\kernel32.dll File Type: DLL Section contains the following exports for KERNEL32.dll 00000000 characteristics 4E20FBA0 time date stamp Sat Jul 16 03:46:56 2011 0.00 version 1 ordinal base 1390 number of functions 1390 number of names ordinal hint RVA name 1 0 AcquireSRWLockExclusive (forwarded to NTDLL.RtlAcquireSRWLockExclusive) 2 1 AcquireSRWLockShared (forwarded to NTDLL.RtlAcquireSRWLockShared) 3 2 00004440 ActivateActCtx 4 3 00066B80 AddAtomA 5 4 00066B20 AddAtomW 6 5 0006ADF0 AddConsoleAliasA 7 6 0006AE60 AddConsoleAliasW
答案 1 :(得分:2)
打开.dll文件,使用二进制PE / COFF规范available from Microsoft查找此PE文件的EXPORT部分。
但我觉得这太过分了。你的问题应该是一个具体的想法。你究竟想要包装什么,你有什么?只有二进制文件而没有源/标题?
答案 2 :(得分:2)
DLL不包含“函数”。它们包含代码和入口点。除非您有调试数据库,否则无法从优化代码中判断出函数之间的转换。