Domanda

Devo fare un'iniezione di processo usando C ++ ma preferirei usare C # per tutto tranne che per cose di basso livello. Ho sentito parlare di " funzione wrapping " e "marshalling" e ho fatto un bel po 'di ricerche su Google e ho trovato un po' di informazioni qua e là ma mi manca ancora davvero.

Cose che ho letto in ordine di utilità;
http://msdn.microsoft.com/en-us /library/ms235281(VS.80).aspx
http://www.drdobbs.com/cpp/184401742
http://geeklit.blogspot.com/2006/ 08 / calling-c-lib-from-c.html

Come posso avvolgere tutte le cose di livello inferiore (C ++ nativo) in C # in modo da poter facilmente comandare quelle funzioni in una lingua con cui mi sento più a mio agio, C #?

Qualsiasi informazione sull'argomento è molto apprezzata.

È stato utile?

Soluzione

Penso che P / Invoke sia davvero l'approccio più diretto:

  • Crea una DLL in non gestito C ++, contenente tutte le funzionalità necessarie per eseguire l'iniezione.
  • Nel tuo codice C #, dichiara alcuni metodi static extern e usa l'attributo DllImport per indicarli alla tua dll C ++. Per maggiori dettagli, consultare il link fornito da arul in la sua risposta .

Nota che P / Invoke non è limitato a " funzioni API di Windows " & # 8212; puoi chiamare funzioni esposte da qualsiasi DLL nativa.

Un potenziale svantaggio di P / Invoke è che dovrai fornire le firme per le tue funzioni C ++, specificando possibilmente un marshalling tutt'altro che ovvio. In tal caso, potresti prendere in considerazione la costruzione di un server COM anziché un "semplice" DLL e utilizzando interoperabilità COM per chiamare il tuo codice da C #.

Altri suggerimenti

Desideri utilizzare P / Invoke, vedi MSDN Magazine .

Se Pinvoking non è quello che vuoi fare, crea un'applicazione C ++ gestita. Utilizzare il C ++ nativo per eseguire l'iniezione di processo. Utilizzare c ++ gestito per creare un'interfaccia .NET compatibile con questo comportamento nativo. Questo può quindi essere chiamato da C #.

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