J'ai un projet C++ et une bibliothèque DLL faite en C#. Est-il possible de l'ajouter au projet C++ et d'utiliser ses méthodes? J'utilise Visual Studio 2008Comment utiliser le fichier de bibliothèque DLL dans un projet C++?
Répondre
Vous avez deux options que je connais:
1) Vous pouvez compiler la DLL C# avec le soutien COM, et y accéder à partir de C++ via COM. Cela impliquera COM Interop qui peut être plus lent que les appels .NET gérés à gérés.
Pour compiler une DLL C# avec prise en charge COM, accédez aux propriétés du projet-> Application-> Informations d'assemblage-> Rendre l'ensemble COM-Visible. Vous utilisez regasm pour enregistrer la DLL sur la machine de l'utilisateur. Ceci est similaire à l'utilisation regsvr32, à l'exception regasm est pour .NET DLL:
http://www.csharphelp.com/archives/archive190.html
Personnellement, j'utilise aussi le commutateur/CODEBASE avec regasm pour DLLs que je l'intention d'être pour COM uniquement. Il fonctionnera toujours sans le commutateur/CODEBASE, mais la DLL apparaîtra également dans le Global Assembly Cache, ce qui ajoute simplement de l'encombrement au GAC et vous inscrit dans beaucoup de fonctionnalités dont je n'ai pas besoin pour mes scénarios d'interopérabilité COM.
Vous pouvez également définir "Enregistrer pour COM-Interop" sous Build, mais ce n'est pas obligatoire. Il est simplement utile lors du débogage répété, car il enregistrera la DLL COM avec regasm sur votre machine lorsque vous le compilez. Cela n'a vraiment rien à voir avec la DLL elle-même. Vous aurez toujours besoin de regaser la DLL sur les machines de l'utilisateur. Après l'enregistrement, vous devriez être en mesure d'ajouter une référence COM à la DLL C#, et de faire des appels à partir de C++ natif, tout comme vous le feriez pour tout autre composant COM.
Ou
2) Vous pouvez compiler le projet C++ en tant que projet C++/CLI géré, vous permettant de faire référence à DLL .NET, comme une DLL C#. Je pense que ce serait la meilleure option si C++/CLI n'est pas un problème pour vous. Les appels entre le code C++/CLI et la DLL C# doivent être meilleurs que ceux de COM Interop, mais d'un autre côté, C++/CLI lui-même est légèrement plus lent que le C++ natif.
- 1. comment utiliser la bibliothèque d'en-têtes C dll dans C#
- 2. Comment utiliser le code C# dans le projet C++
- 3. Utiliser * .pdf dans le projet de bibliothèque de classes (web)
- 4. où stocker le fichier .properties à utiliser dans C++ dll
- 5. Comment puis-je utiliser un DLL C# dans un projet Win32 C++?
- 6. Comment utiliser la bibliothèque MonoTouch dans un projet Xcode?
- 7. fichier de bibliothèque de classes projet non compilation dans le débogage ou .dll
- 8. Utilisation de vb.net dll dans un projet C++ non géré
- 9. Utilisation de la DLL C++ dans le projet C#
- 10. Comment utiliser C# DLL dans vC++?
- 11. Comment utiliser un DLL?
- 12. Comment convertir un projet de bibliothèque de classes C# en projet Silverlight?
- 13. Delphi DLL pour améliorer le projet C++
- 14. Comment utiliser le fichier app.config avec un projet de test
- 15. Comment inclure une DLL SQLite dans mon projet C++?
- 16. Comment créer un fichier dll
- 17. C++ dll dans le programme C
- 18. Mettre à niveau une DLL de référence dans un projet C# sans recompiler le projet
- 19. en C, comment utiliser la fonction du fichier programme principal dans un fichier de bibliothèque partagée
- 20. Comment utiliser SharpSVN dans mon propre projet Mono (C#)?
- 21. Comment déboguer un fichier DLL dans Delphi
- 22. Désenregistrement d'une DLL COM avec un projet de configuration C#
- 23. Comment utiliser le fichier tlb en C?
- 24. comment utiliser la classe C++ dans le projet C#
- 25. Netbeans: comment inclure un autre projet de bibliothèque statique C++?
- 26. Comment ajouter un chemin de DLL d'exécution dans le projet VIsual C++ Express 2010?
- 27. Comment déboguer un fichier .dll?
- 28. Problème de bibliothèque dans le projet
- 29. Comment utiliser la bibliothèque DLL CLR dans IronScheme
- 30. Inclure la bibliothèque C++ statique dans le projet Objective C
comment puis-je y accéder depuis COM? Je ne veux pas utiliser C++ géré. l'utilisation de C++ géré aura une incidence sur les performances, n'est-ce pas? –
Oui et Non. En général, le C++ géré est légèrement moins performant que le C++ natif. Mais dans votre cas, vous envisagez de faire des appels COM dans une DLL C# .net, qui s'appelle COM interop, et dans mon expérience, l'interopérabilité COM est plus lente qu'un appel géré-à-géré. Je vais ajouter des informations sur la façon de compiler C# DLL comme une DLL COM, dans le cas où vous décidez que c'est ce que vous voulez faire. – AaronLS
merci beaucoup. oui je voudrais. Donc vous pensez que la performance n'est pas un gros problème ici? –