Esportazione di una funzione C nativa da una DLL .NET? [duplicare
-
13-11-2019 - |
Domanda
Questa domanda ha già una risposta qui:
Ho un assembly .NET scritto in C#e sto cercando di esportare una funzione C nativa dall'assemblaggio.
Ho un'applicazione che eseguirà un 'LoadLibrary ()' su qualsiasi DLL trovata in una cartella 'plugin'. Dopo aver caricato la DLL, l'applicazione esegue un "getPrCaddress" alla ricerca di una funzione denominata "Register". L'applicazione prevede che questa funzione segua la Convenzione C chiamata.
Come posso esportare una funzione denominata "Register" dal mio assembly .NET, in modo da poter collegarsi correttamente con il sistema di plug -in per questa applicazione?
Grazie, Andrew
Soluzione
Uso questo strumento.
Altri suggerimenti
Scrivi una libreria .NET in C ++ gestita e lì puoi esportare un metodo/funzione "nativo".
Purtroppo Microsoft non supporta questa funzione e devi cambiare MSIL dopo la build per esporre tali metodi. È possibile poiché un ragazzo ha mostrato una soluzione ragionevole su CodeProject o qui, ma richiede un passaggio di build post e sei da solo. Non so se questo hack funzionerà su .NET 4.0 o successivo. Spero che Microsoft ci ascolti e supporterà questa semplice funzionalità in C# poiché il supporto CLR è già lì.
Quello che vuoi è un Invertire p/invocare. Non è possibile effettivamente incorporare una funzione C in una DLL C#, se con questo intendi una funzione effettivamente implementata in C, ma seguendo i tutorial indicati nella pagina collegata è possibile creare un'esportazione DLL che è richiamabile da un codice C/C ++ non gestito .