Comment appeler gérés C# fonctions de C++ non géréappelant gérés C# fonctions de C++ non géré
Répondre
RE: Comment appeler du code managé C# à partir d'une application C++ non géré?
Calling managé .NET C# COM objets de code non géré C++ ...
http://www.codeproject.com/KB/cs/ManagedCOM.aspx
Emballage d'un DLL géré C# dans un projet C++ non géré: dll.
http://www.experts-exchange.com/Programming/Languages/.NET/Q_22006727.html
J'ai suivi le deuxième lien que vous avez fourni et compiler avec succès le fichier cpp mais n'a pas réussi à l'exécuter. Il échoue à CreateInstance() en utilisant smartpointer ..... donc iam incapable d'appeler les fonctions de C# dll – user186246
S'il vous plaît poster ici une solution ou au moins un résumé de celui-ci. Le lien peut se briser à l'avenir. Et il est aussi plus facile de lire toutes les solutions ici. Si elles sont plus d'une, vous pouvez les poster comme des réponses multiples. Merci! ;) – bluish
Ou utiliser un project of mine qui permet de créer C# exportations non gérés. Ceux-ci peuvent être consommés comme s'ils étaient écrits dans une langue maternelle.
Salut, Cela semble très intéressant. Avez-vous une version pour VS 2010, ou pouvez-vous me signaler les changements à faire pour la rendre disponible pour VS 2010/Net 4? Merci – bzamfir
Si cela fonctionne très bien (je l'utilise moi-même en 2010), vous voudrez peut-être changer le framework cible du projet nouvellement créé en 4.0. VS 2010 utilise par défaut .Net 2.0 lorsqu'aucun paramètre de structure cible n'est présent. –
Merci, très bien. J'ai vu cela (j'ai créé un projet de test d'échantillon vide, mais pas testé si cela fonctionne encore) – bzamfir
J'ai d'abord utilisé COM interop, mais maintenant je suis passé à IJW (ça marche), car c'est beaucoup plus simple. J'ai une enveloppe C++/CLR DLL (compiler avec/clr).
Un exemple simple (en utilisant statics pour faire les appels plus facile):
namespace MyClasses
{
public class MyClass
{
public static void DoSomething()
{
MessageBox.Show("Hello World");
}
}
}
Dans la DLL je peux faire référence à namespaces comme suit:
using namespace MyClasses;
et l'appeler:
__declspec(dllexport) void CallManagedCode()
{
MyClass::DoSomething();
}
Vous avez maintenant une exportation DLL non gérée "CallManagedCode" qui appelle dans le code managé.
Bien sûr, vous devez également convertir les données entre les limites gérées/non gérées. À partir de VS2008, Microsoft inclut un marshal-helper pour la conversion entre les types non gérés et gérés. Voir http://msdn.microsoft.com/en-us/library/bb384865.aspx
Vous n'avez pas vraiment à descendre cette route manuellement. Consultez le lien dans ma réponse. Il est tout à fait possible d'avoir la contrepartie de DllImport en C#, y compris toutes les qualités de marshaling fournies avec .Net. Ma tâche MSBuild ajoute le vt-fixup approprié après la construction et vous n'avez pas besoin de déployer un autre assembly ... –
Je l'ai essayé: La DLL a les exportations. Cependant, comment suis-je censé l'utiliser? Je n'ai pas trouvé de fichier .lib pour me permettre de créer un lien vers la DLL. –
Je n'utilise pas C++, mais je suppose que ce n'est pas différent de ce que vous feriez pour une bibliothèque qui ne contient pas d'en-têtes C/C++: Écrivez l'en-tête pour les fonctions que vous voulez importer vous-même. Comme je l'ai dit, je n'utilise pas C++. C'est assez simple de C ou Delphi. –
J'ai utilisé les classes d'encapsulation C++/CLI described here et il était relativement facile à implémenter.
S'il vous plaît poster ici une solution ou au moins un résumé de celui-ci. Le lien peut se briser à l'avenir. Et il est aussi plus facile de lire toutes les solutions ici. Si elles sont plus d'une, vous pouvez les poster comme des réponses multiples. Merci! ;) – bluish
- 1. Gestion des destructeurs d'objets gérés (C#) et non gérés (C++)
- 2. Affectation des objets gérés dans C++ géré
- 3. géré C++ std :: string non accessible en c non géré ++
- 4. C# à C non géré ++
- 5. Appel d'objets COM C++ non gérés à partir de C#
- 6. Définitions communes partagées à travers C/C++ (non géré) et le code C# géré
- 7. Jeton C++ non résolu géré
- 8. Gdiplus en C++ géré ou non géré?
- 9. Conversion entre les types gérés et non gérés en C++?
- 10. Attributs d'assembly C++ gérés
- 11. Code de rappel non géré de C géré
- 12. ERROR_MORE_DATA --- PVOID et C# --- types non gérés
- 13. Utilisation de code C++ dans un projet C++ géré C# non géré dans Visual Studio 2008
- 14. Libération de code non géré en C#
- 15. Passage de pointeurs non gérés en C++/CLI
- 16. Transmettre DataTable à un environnement non géré (Visual C# 2005)
- 17. Conversion de code C++ non géré en C#
- 18. COM vs objets C++ gérés étroitement encapsulés
- 19. Meilleure méthode d'appel de code managé (C#) à partir de C++ non géré
- 20. Wrapper C# en utilisant dll non géré
- 21. C# appelant le code non managé
- 22. Créer un objet C++ non géré dans C#
- 23. gérer des codes non gérés en JAVA?
- 24. Fournisseur OleDB géré écrit en C#
- 25. Sending Byte [] [] inbetween C++ dll non géré et C# géré dll
- 26. Obtention de fonctions C++ non gérées à partir de C#
- 27. Comment faire pour envelopper deux fonctions C++ non managées en deux fonctions C# managées?
- 28. appelant c de php
- 29. Impossible de déboguer Dll non géré à partir de C#
- 30. Code C natif non géré vers .NET compatible
voir http://stackoverflow.com/questions/1802929/how-can-we-use-net-dll-in-vc/1802952#1802952 – Henrik