Una DLL nativa può chiamare una DLL .NET?Una DLL può chiamare una DLL .NET?
risposta
No, è necessario utilizzare C++ gestito
Senza usare COM, è necessario scrivere un C++/CLI involucro. Il tuo codice nativo che include il file di intestazione del tuo wrapper deve essere compilato con/clr (supporto Common Language Runtime).
Solo per curiosità, perché non utilizzare l'interoperabilità COM? Controlla gli strumenti regasm.exe e tlbexp.exe.
Perché non ho familiarità con COM e farò tutto il possibile per evitare di impararlo :) –
COM soffre anche del problema di inferno DLL brutto dovuto alla registrazione globale. È possibile fare COM senza registrazione ma la documentazione è confusa e ci sono errori http://stackoverflow.com/questions/617253/is-anyone-successfully-using-registration-free-com-with-net-components –
Hai bisogno di qualcosa per far funzionare il mondo gestito e il mondo non gestito. Se non si desidera utilizzare COM, è possibile creare classi wrapper in C++/CLI.
Ecco un articolo che può iniziare: .NET to C++ Bridge.
Grazie per l'articolo. È utile –
Oppure un wrapper scritto in C++ gestito. –
Esattamente. Quello che facciamo è creare un involucro sottile con esportazioni "C" extern standard in C++ gestito, quindi scrivere il codice reale in C#. – ConsultUtah