2009-10-28 5 views
5

Come si chiama un codice .NET da C++ nativo (codice non gestito)? Voglio esporre il codice .NET alla mia applicazione non gestita (C++) e quindi usarli. Più specificamente, voglio chiamare C# dal C++ nativo :). So che ci sono molti modi, ma puoi dirmi i pro ei contro di ciascuno? A proposito, non voglio usare la COM quindi quali sono le opzioni ora?Come utilizzare il codice gestito dal codice non gestito?

È possibile che avvolgo il codice C# in C++/CLI e quindi lo chiami da C++? Se è così, come faccio? Come faccio a racchiudere il C# in C++/CLI e poi chiamarlo da C++?

+0

possibile duplicato di [Esportazione delle funzioni di dll in programmi non gestiti] (http://stackoverflow.com/questions/12647766/exporting-dll-functions-to-unmanaged-programs) – Rohit

risposta

0

È possibile expose il componente gestito come oggetto COM.

5

ho scritto su di esso solo di recente. Si trattava di Delphi, ma questo non significa che non funzionerà anche con C++.

.NET component in DELPHI 2009

Anche senza sapere molto su C++, non so ancora che i riferimenti di interfaccia compatibili con COM IUnknown e dovrebbero essere utilizzabili bene da C++ (nel caso è necessario passare oggetti, non solo delle strutture).

  • È possibile utilizzare C++/CLI di Microsoft per fare riferimento al codice C# ed esportarlo come funzioni DLL ordinarie.
  • È anche possibile scaricare un MSBuild task che ho scritto, che consente di esportare la funzione direttamente da C#. Analogo al modo in cui viene utilizzato DllImportAttribute.

Questo codice C# esportava una funzione "NomeEsportato" che può essere utilizzata proprio come qualsiasi funzione compatibile c sarebbe utilizzata.


class Sample 
{ 
    [DllExport("YourExportName")] 
    static int TestFunction(int left, int right) 
    { 
    return left + right; 
    } 
} 
1

si può sempre incorporare Mono. L'ho fatto personalmente in due progetti fino ad ora ed è abbastanza facile. Seguire Embedding Mono per ulteriori informazioni.