मैं एक टिप्पणी पोस्ट करूंगा, जो मैंने लिखी टिप्पणियां एकत्रित की है।
ऐसा करने के लिए सबसे प्रसिद्ध लाइब्रेरी (आज के रूप में) UnmanagedExports है। इसका पृष्ठ https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports है। अफसोस की बात है कि कोई स्रोत कोड उपलब्ध नहीं है, लेकिन इसे एमआईटी लाइसेंस के तहत लाइसेंस प्राप्त है, इसलिए शायद इसे देखने के लिए IlSpy का उपयोग करना ठीक है।
यह कैसे किया जाता है इसके बारे में कुछ संदर्भ हैं।
कोडप्रोजेक्ट पर कम से कम दो लेख हैं: How to Automate Exporting .NET Function to Unmanaged Programs जो .NET 2.0 और Unmanaged code can wrap managed methods के लिए प्रतीत होता है जो दुख की बात है .NET 1.1।
कुछ 384
आप निश्चित रूप से एक और बात कर सकते हैं पेज आसपास पुस्तक Expert .NET 2.0 IL Assembler में संदर्भ नहीं है: निरीक्षण क्या करना UnmanagedExports
: अंत में UnmanagedExports
दो भागों से "सुगठित" है: एक विधानसभा RGiesecke.DllExport.Metadata.dll
युक्त एक " बेवकूफ "विशेषता DllExportAttribute
प्लस दो असेंबली (कि मेरे कंप्यूटर पर पैकेज \ unmanagedExports.1.2.6 \ tools फ़ोल्डर में nuget इंस्टॉल करता है): RGiesecke.DllExport.dll
और RGiesecke.DllExport.MSBuild.dll
।
<Import Project="packages/UnmanagedExports.1.2.6/tools/RGiesecke.DllExport.targets" Condition="Exists('packages/UnmanagedExports.1.2.6/tools/RGiesecke.DllExport.targets')" />
उस वर्ग RGiesecke.DllExport.MSBuild.DllExportAppDomainIsolatedTask
विधानसभा RGiesecke.DllExport.MSBuild.dll
में निहित के निष्पादन का कारण: UnmanagedExports
की nuget संस्थापक की तरह, csproj करने के लिए कुछ लाइनों कहते हैं।
Mono.Cecil
का उपयोग करके यह कक्षा, कुछ कोड रीविविंग करने वाले असेंबली को फिर से लिखती है।
यह प्रोग्राम आईएल कोड स्रोत उत्पन्न करने के लिए बस ildasm
पर कॉल करता है, आईएल कोड स्रोत को संशोधित करता है और फिर "मूल" .dll/.exe उत्पन्न करने के लिए ilasm
का उपयोग करता है। तो सीधे शब्दों में, दो विधानसभाओं, <Import />
बाहर टिप्पणी की साथ <Import />
के साथ एक और एक अन्य उत्पन्न है, तो एक
ildasm yourdll.dll /out=source.il
दोनों फ़ाइलों के
करते हैं और अपने पसंदीदा फ़ाइल comparer के साथ तुलना।
एक और दिलचस्प लिंक here है। X64 पर काम करने के तरीके के बारे में कुछ टिप्पणियां हैं।
अगर मुझे ऐसा कुछ बनाना पड़ा, तो शायद मैं इसे
Fody पर एकीकृत करने का प्रयास करूंगा। इस तरह से मेरा पूरा पोस्ट-बिल्ड टास्क मुफ्त में होगा (क्योंकि यह फोडी द्वारा किया जाता है)
Mono.Cecil
के साथ नहीं किया जा सकता ...Mono.Cecil
मिश्रित मोड असेंबली नहीं लिख सकता (जो प्रतीकों को निर्यात करने के लिए आवश्यक हैं)। आपको UnmanagedExports (और कई अन्य उदाहरणों द्वारा) द्वारा उपयोग की जाने वाली "चाल" का उपयोग करना होगा ... आईएल फ़ाइल जेनरेट करें, इसे संशोधित करें (यह एक निश्चित प्रारूप में एक टेक्स्ट फ़ाइल है ... संशोधित करने में काफी आसान है), फिर से -dll/.exe उत्पन्न करें।
https://github.com/3F/DllExport
अप्रबंधित निर्यात C++/CLI संकलक रिवर्स PInvoke के लिए करना है क्या अनिवार्य रूप से कर रही हो गया है:
यह एक है: https://www.nuget.org/packages/UnmanagedExports, प्रलेखन https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports – xanatos
जो मेरा पहला शब्द था, मैंने उस पुस्तकालय को पाया, इसके बारे में सब कुछ पढ़ा और अभी भी मुझे कोई जगह नहीं मिली है, मैं इस बिंदु पर पूरी तरह से समझना चाहता हूं कि मैं अपना खुद का – user3761832
लिख सकता हूं, आपने वास्तव में कभी नहीं कहा ** ** ** लाइब्रेरी आपको मिली! – MrPaulch