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

È stato utile?

Soluzione

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top