2012-07-25 12 views
6

तो मैं एक डीएलएल (UnityEditor.dll) के आसपास खेलता हूं, मैं इस प्रबंधित डीएलएल के अंदर सभी कार्यों की एक सूची प्राप्त करना चाहता हूं जो अप्रबंधित हैं (डीएल शायद मूल सी ++ से बना है (स्थिर रूप से संकलित libaries के साथ यदि इसका उपयोग किया गया था) कोर और प्रबंधित सी ++ रैपर सभी को एक डीएल में लपेटा गया।) मैं उस डीएल के अंदर सभी अप्रबंधित कार्यों की एक सूची प्राप्त करना चाहता हूं उदाहरण के लिए अपना स्वयं का प्रबंधित \ unmanaged wrapper बनाएं?डीएलएल (प्रबंधित और अप्रबंधित) के अंदर कार्यों की सूची कैसे प्राप्त करें?

+0

क्या आपका मतलब निर्यात है? – Martin

+0

उन कार्यों को कहें जिन्हें 'बाहरी सी ...' या – myWallJSON

+0

जैसा कुछ बताया गया है UnityEditor.dll एक प्रबंधित डीएलएल है, और यह सब एकता के सी ++ कोड को लपेटता है। आप dotPeek का उपयोग करके अपना कोड देख सकते हैं। –

उत्तर

8

dumpbin.exe विजुअल स्टूडियो के साथ भेजे गए उपयोगिता का उपयोग निर्यात की एक सूची प्रदर्शित करने के लिए किया जा सकता है।

dumpbin.exe/निर्यात 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

मुझे इससे सब कुछ मिलता है: सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 10.0 \ वीसी> डंपबिन.एक्सई/एक्सपोर्ट्स "सी: \ प्रोग्राम फ़ाइलें (x86) \ ppp \ unityEngine.dll" माइक्रोसॉफ्ट (आर) सीओएफएफ/पीई डम्पर संस्करण 10.00.40219.01 कॉपीराइट (सी) माइक्रोसॉफ्ट कॉर्पोरेशन। सर्वाधिकार सुरक्षित। फ़ाइल सी के डंप: \ Program Files (x86) \ पीपीपी \ UnityEngine.dll फ़ाइल प्रकार: DLL सारांश 2000 .reloc 2000 .rsrc 74000 .text C: \ Program Files (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 10.0 \ वीसी> – myWallJSON

+0

@myWallJSON, तब उस डीएलएल द्वारा निर्यात किए गए कोई फ़ंक्शन नहीं हैं। आप 'डंपबिन' के अन्य विकल्पों की जांच कर सकते हैं। – hmjd

+0

यहां तक ​​कि "सभी" कोई जानकारी प्रदान नहीं करता है। अप्रबंधित डीएलएल एक मूल के अंदर लपेटा गया है = ( – myWallJSON

2

ओपन .dll फ़ाइल और निर्यात के लिए देखो बाइनरी पीई/सीओएफएफ चश्मा available from Microsoft का उपयोग कर इस पीई फ़ाइल का खंड।

लेकिन यह एक ओवरकिल है, मुझे लगता है। आपका प्रश्न एक ठोस इच्छा होना चाहिए। आप वास्तव में क्या लपेटना चाहते हैं और आपके पास क्या है? केवल द्विआधारी और कोई स्रोत/शीर्षलेख नहीं?

2

डीएलएल में "फ़ंक्शंस" नहीं है। उनमें कोड और एंट्री पॉइंट होते हैं। अनुकूलित कोड से बताना संभव नहीं है जहां कार्यों के बीच संक्रमण तब तक होता है जब तक आपके पास डीबग डेटाबेस नहीं होता है।

संबंधित मुद्दे

 संबंधित मुद्दे