2012-07-25 110 views
6

所以我周圍的DLL(UnityEditor.dll)玩,我想獲得的所有功能列表裏面這個託管的DLL這是非託管(DLL可能是從本地C++組成(與靜態編譯libaries如果這樣使用)的核心並管理C++包裝所有包裝成一個DLL)我想獲得該Dll內的所有非託管函數的列表,例如創建我自己的託管\非託管包裝?如何獲取DLL中的函數列表(託管和非託管)?

+0

你的意思是出口? – Martin 2012-07-25 20:20:32

+0

說定義爲'extern C ...'或類似的功能 – myWallJSON 2012-07-25 20:45:55

+0

UnityEditor.dll是一個託管的DLL,它所做的只是將調用包裝爲Unity的C++代碼。您可以使用dotPeek查看其代碼。 – 2014-10-16 06:08:48

回答

8

dumpbin.exe工具隨Visual Studio可以用來顯示出口的列表。例如:

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 
+0

所有我從中得到的是:C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \ VC> DUMPBIN.EXE /出口 「C:\ Program Files文件(x86)的\ PPP \ UnityEngine.dll」 微軟(R) COFF/PE Dumper Version 10.00.40219.01 版權所有(C)Microsoft Corporation。版權所有。 轉儲文件C:\ Program Files文件(x86)的\ PPP \ UnityEngine.dll 文件類型:DLL 摘要 2000 .reloc節 2000 .rsrc 74000的.text C:\ Program Files文件(86 )\ Microsoft Visual Studio 10.0 \ VC> – myWallJSON 2012-07-25 21:06:49

+0

@myWallJSON,那麼沒有該DLL導出的函數。你可以調查其他選項到'dumpbin'。 – hmjd 2012-07-25 21:52:48

+0

即使「ALL」也不提供任何信息。非託管DLL被包裝在本地的一個=( – myWallJSON 2012-07-26 10:58:22

2

打開.dll文件並查找EXPORT使用二進制PE/COFF規格available from Microsoft,該PE文件的一部分。

但是,這是矯枉過正,我想。你的問題應該是一個具體的想法。你想要包裝什麼,你有什麼?只有二​​進制文件和沒有源/頭文件?

2

DLLs不包含「功能」。它們包含代碼和入口點。除非您有調試數據庫,否則無法從優化的代碼中知道函數之間的轉換髮生在哪裏。