所以我周圍的DLL(UnityEditor.dll)玩,我想獲得的所有功能列表裏面這個託管的DLL這是非託管(DLL可能是從本地C++組成(與靜態編譯libaries如果這樣使用)的核心並管理C++包裝所有包裝成一個DLL)我想獲得該Dll內的所有非託管函數的列表,例如創建我自己的託管\非託管包裝?如何獲取DLL中的函數列表(託管和非託管)?
回答
的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
所有我從中得到的是: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
@myWallJSON,那麼沒有該DLL導出的函數。你可以調查其他選項到'dumpbin'。 – hmjd 2012-07-25 21:52:48
即使「ALL」也不提供任何信息。非託管DLL被包裝在本地的一個=( – myWallJSON 2012-07-26 10:58:22
打開.dll文件並查找EXPORT使用二進制PE/COFF規格available from Microsoft,該PE文件的一部分。
但是,這是矯枉過正,我想。你的問題應該是一個具體的想法。你想要包裝什麼,你有什麼?只有二進制文件和沒有源/頭文件?
DLLs不包含「功能」。它們包含代碼和入口點。除非您有調試數據庫,否則無法從優化的代碼中知道函數之間的轉換髮生在哪裏。
- 1. VC++和C#如何編寫託管DLL或非託管DLL?
- 2. 非託管的DLL
- 3. 從託管代碼調用非託管DLL函數時出錯
- 4. C#獲取非託管dll版本
- 5. 在非託管C++ dll中使用託管c#dll
- 6. C#託管的dll調用或非託管的dll調用?
- 7. 在非託管DLL中存儲「託管」上下文參數
- 8. 如何從託管C++調用非託管DLL
- 9. 如何通過託管代碼將非託管函數指針從dll發送到其他dll中的另一個非託管函數?
- 10. 動態鏈接託管的C++類庫中的非託管dll
- 11. 託管和非託管DLL之間有什麼區別
- 12. 爲32位和64位非託管DLL創建託管包裝
- 13. 獲取非託管模式
- 14. 如何從C#代碼調用非託管dll中的函數?
- 15. 非託管dll代碼
- 16. 預加載非託管dll
- 17. 如何將非託管dll和託管程序集合到一個文件中?
- 18. 託管vs非託管
- 19. DirectX託管或非託管?
- 20. C++託管和非託管靜態庫
- 21. 非託管內存和託管存儲
- 22. 如何在非託管對象中獲得託管bean?
- 23. 此DLL是管理還是非託管?
- 24. 將非託管轉換爲託管過程中的託管
- 25. 添加託管的DLL依賴於非託管C++項目
- 26. c#:通常將非託管陣列轉換爲託管列表
- 27. 如何從非託管應用程序中延遲加載託管的DLL?
- 28. 將非託管/非託管成員添加到託管類
- 29. 非託管char *數組託管System ::字符串託管C++
- 30. WinRT XAML - 託管和非託管 - 它是如何工作的?
你的意思是出口? – Martin 2012-07-25 20:20:32
說定義爲'extern C ...'或類似的功能 – myWallJSON 2012-07-25 20:45:55
UnityEditor.dll是一個託管的DLL,它所做的只是將調用包裝爲Unity的C++代碼。您可以使用dotPeek查看其代碼。 – 2014-10-16 06:08:48