SQLite da PHX Software ha combinato un assembly gestito (System.Data.SQLite) con una dll non gestita (la DLL di SQLite a 32 o 64 bit) in un unico file e è riuscita a collegarli tra loro.Come si combinano una dll non gestita e un assembly gestito in un unico file?
Come posso fare? Devo incorporare l'assembly gestito nella DLL non gestita o viceversa?
ie. le mie domande sono:
- In quale ordine devo eseguire questa operazione?
- Quali strumenti o conoscenze ho bisogno per fare questo?
- In che modo (se diverso) collego le funzioni esportate dalla dll non gestita nel mio codice gestito?
Il motivo per cui lo chiedo è che voglio creare un wrapper zLib gestito. So che ci sono classi gestite in .NET ma dall'esperienza sono un po 'limitate (e un po' ossessionate dal fatto che non fanno il buffering appropriato), quindi mi piacerebbe creare la mia copia, anche perché voglio impara come fare questo
Così qualcuno sa cosa devo fare e come?
ho trovato il seguente:
- How to merge several managed and unmanaged DLLs into a single DLL?
- Sample: Mixing Unmanaged C++, C++/CLI, and C# code
ho intenzione di provare questo, ma tutte le ulteriori informazioni disponibili sarebbe bello pure.
Pensateci due volte prima di fare questo, specialmente con i vostri gruppi di "core". Se questa non è la caratteristica essenziale del codice, è meglio rendere tali assiemi caricati dinamicamente.In altri casi, chiunque utilizzi tale assembly dovrà eseguire alcuni passaggi aggiuntivi per assicurarsi che utilizzi la versione corretta (x86 vs x64), anche se non ha utilizzato alcun codice non gestito. È ragionevole per te un esempio di 'System.Data.SQLite' (funzione essenziale) ma potrebbe non essere ragionevole nel tuo caso. – SergGr