Reputation: 9502
So I play around a DLL (UnityEditor.dll) I wanna to get a list of all functions inside of this managed DLL which are unmanaged (dll is probably composed from a native C++ (with statically compiled libaries if such were used) core and managed C++ wrapper all wrapped into one dll.) I want to get a list of all unmanaged functions inside of that Dll to for example create my own managed\unmanaged wrapper?
Upvotes: 12
Views: 22052
Reputation: 283634
DLLs don't contain "functions". They contain code and entrypoints. It's not possible to tell from optimized code where transitions between functions occur unless you have a debug database.
Upvotes: 1
Reputation: 14467
Open the .dll file and look for the EXPORT section of this PE file using the binary PE/COFF specs available from Microsoft.
But that's an overkill, I think. Your question should be a concrete want. What exactly do you want to wrap and what do you have ? Only the binaries and no source/headers ?
Upvotes: 2
Reputation: 121971
The dumpbin.exe
utility shipped with Visual Studio can be used to display a list of exports. For example:
dumpbin.exe /EXPORTS C:\WINDOWS\System32\Kernel32.dll
Example output:
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
Upvotes: 18