Come chiamare funzioni C# gestite da C++ non gestitochiamata C# funzioni dal C++ non gestito
risposta
RE: Come chiamare codice gestito C# da un'applicazione non gestita C++?
Calling gestito .NET C# oggetti COM non gestito dal codice C++ ...
http://www.codeproject.com/KB/cs/ManagedCOM.aspx
Wrapping un C# DLL gestita in C++ non gestito progetto: dll.
http://www.experts-exchange.com/Programming/Languages/.NET/Q_22006727.html
Ho seguito il secondo collegamento che hai fornito e compilato con successo il file cpp ma non è riuscito a eseguirlo. Si sta venendo a mancare a CreateInstance() utilizzando smart pointer ..... così iam in grado di richiamare le funzioni di C# dll – user186246
Si prega di postare qui una soluzione o almeno un riassunto di esso. Il collegamento può rompersi in futuro. E anche qui è più facile leggere tutte le soluzioni. Se sono più di uno puoi pubblicarli come risposte multiple. Grazie! ;) – bluish
Oppure utilizzare un project of mine che permette C# per creare le esportazioni non gestiti. Questi possono essere consumati come se fossero scritti in una lingua madre.
Ciao, sembra molto interessante. Hai una versione per VS 2010, oppure puoi indicarmi quali modifiche apportare per renderlo disponibile per VS 2010/Net 4? Grazie – bzamfir
Dovrebbe funzionare bene (lo uso io stesso nel 2010), potreste voler cambiare il framework di destinazione del progetto appena creato in 4.0, comunque. VS 2010 è impostato su .Net 2.0 quando non è presente alcuna impostazione del framework di destinazione. –
Grazie, fantastico. L'ho visto (ho creato un progetto di prova campione vuoto, ma non testato se funziona ancora) – bzamfir
Ho usato prima l'interoperabilità COM, ma ora sono passato a IJW (funziona solo), in quanto è molto più semplice. Ho un wrapper C++/CLR DLL (compilare con/clr).
Un semplice esempio (usando statica per effettuare le chiamate più facili):
namespace MyClasses
{
public class MyClass
{
public static void DoSomething()
{
MessageBox.Show("Hello World");
}
}
}
nella DLL posso fare riferimento namespace come segue:
using namespace MyClasses;
e chiamarlo:
__declspec(dllexport) void CallManagedCode()
{
MyClass::DoSomething();
}
Ora avete una DLL non gestita esportazione "CallManagedCode" che chiama in codice gestito.
Naturalmente, è anche necessario convertire i dati tra il limite gestito/non gestito. A partire da VS2008, Microsoft include un marshal-helper per la conversione tra tipi non gestiti e gestiti. Vedi http://msdn.microsoft.com/en-us/library/bb384865.aspx
Non è necessario eseguire manualmente questa rotta. Controlla il link nella mia risposta. È del tutto possibile avere la controparte di DllImport in C#, inclusa tutta la qualità di marshalling che viene fornita con .Net. La mia attività MSBuild aggiunge le correzioni vt appropriate dopo la compilazione e non è necessario distribuire un altro assembly ... –
L'ho provato: la DLL ha le esportazioni. Tuttavia, come dovrei usarlo? Non ho trovato un .lib per consentirmi di collegarmi alla DLL. –
Non uso C++, ma suppongo che non sia diverso da come faresti per qualsiasi libreria che non viene fornita con intestazioni C/C++: Scrivi l'intestazione per le funzioni che desideri importare. Come ho detto, non uso il C++. È piuttosto semplice da C o Delphi. –
Ho utilizzato classi wrapper C++/CLI described here ed è stato relativamente facile da implementare.
Si prega di postare qui una soluzione o almeno un riassunto di esso. Il collegamento può rompersi in futuro. E anche qui è più facile leggere tutte le soluzioni. Se sono più di uno puoi pubblicarli come risposte multiple. Grazie! ;) – bluish
- 1. chiamata Swift dal C
- 2. TargetInvocationException non gestito: C#
- 3. Prestazioni di chiamata .dll non gestito da C#
- 4. durante la chiamata di codice non gestito dal codice gestito in Windows 7
- 5. Prestazioni di richiamo del codice non gestito dal codice gestito
- 6. TypeLoadException non gestito in C#
- 7. Come utilizzare il codice gestito dal codice non gestito?
- 8. C++ gestito (C++/CLI) vs C#/VB.NET
- 9. Chiamata di funzioni Cython C da Python
- 10. c/C++ ottimizzazione per variabile costante nelle funzioni di chiamata
- 11. Utilizzo del codice non gestito dal codice gestito
- 12. Prestazioni della chiamata di funzioni .Net (C# F #) VS C++
- 13. Chiamare una dll C++ (codice non gestito) da un servizio Windows C# (scritto nel codice gestito)
- 14. Passare la struttura da C++ non gestito a C#
- 15. Utilizzare le proprietà C# nel codice C++ non gestito
- 16. Pass char ** per riferimento da C# a C++ non gestito
- 17. collegamento non gestito DLL C++ con gestito classe C++ libreria DLL
- 18. chiamata codice opencv C++ nell'applicazione C#
- 19. esegue il debug del codice C++ gestito e del codice C++ non gestito in una soluzione
- 20. Funzioni membro volatile C++
- 21. C++ gestito per formare un ponte tra C# e C++
- 22. Porting (non gestito) da C++ a C# e utilizzo del C++ come DLL in un'applicazione C#
- 23. Chiamata di un callback nativo dal codice gestito .NET (durante il caricamento del codice gestito tramite COM)
- 24. Analisi metrica codice per codice C++ non gestito
- 25. NDK Android: chiamata alle funzioni Java da C++
- 26. Libreria condivisa C++ chiamata da C
- 27. C funzioni prototipo
- 28. d2: chiamata writefln in D librerie condivise dal lato C
- 29. non può eseguire il debug non gestito DLL da C#
- 30. È possibile chiamare una DLL gestita da C++ non gestito?
vedere http://stackoverflow.com/questions/1802929/how-can-we-use-net-dll-in-vc/1802952#1802952 – Henrik