2009-06-25 6 views
3

J'ai une application C++ pure développée en utilisant VC 6.0. Je voudrais que cette application utilise une bibliothèque développée en C#. Comment puis-je appeler les méthodes de la bibliothèque C# à partir de mon exécutable natif? Je ne veux pas convertir mon application native C++ non gérée en code managé. De même, comment faire l'inverse? PInvoke est-il la seule option? J'apprécierais n'importe quelles références ou pointeurs pour le même.Comment appeler le code .NET géré à partir de mon code C++ non géré sous Windows et vice versa?

Répondre

3

Pour appeler du code managé à partir d'un C++ non géré, utilisez ClrCreateManagedInstance ou exportez vos types dans votre assembly managé comme COM visible et utilisez COM. Pour appeler un code non géré à partir de managed, utilisez COM ou P/Invoke.

1

La ligne principale de Microsoft sur ceci est l'utilisation COM interop. Il y a cependant une autre option, parfois appelée "Reverse P/Invoke" il y a un article de blog intéressant here et encore plus here

De plus, si vous avez Delphi.NET (maintenant défunt), cette langue vous permet d'exporter de la statique méthodes comme vous le feriez toute fonction dll alors vous pouvez appeler dans l'assembly Delphi.NET tout comme une DLL native normale.

Questions connexes