jusqu'à présent, j'ai compris que je devais sortir, je devais recompiler la bibliothèque comme un Maintenant, comment puis-je l'utiliser? P>
Je suis prêt à écrire des wrappers, mais je ne sais pas où commencer ou comment "voir" quelles fonctions j'ai gagnées. J'ai lu un peu de savoir comment les noms de classe et les fonctions pourraient être mangés par le compilateur ... Dois-je revenir en arrière et ajouter La bibliothèque C ++ en question est toujours en cours de développement actif. J'espère donc que je puisse modifier la bibliothèque C ++ aussi peu que possible et simplement le recompiler périodiquement avec quelques commutateurs, puis exposer la nouvelle fonctionnalité que j'en ai besoin. p> .dll code> au lieu d'un
.lib code>, activer
/ clr code > et
/ eha code> au lieu de
/ ehsc code>. Maintenant, j'ai une DLL gérée que j'ai ajouté comme référence dans mon projet C #. P>
__ DeclSpec code> exportations partout (si oui, comment?), Existe-t-il une option dans VS2010 qui dit "Ne pas l'endormir!"? P>
4 Réponses :
Si vous allez compiler votre C ++ (si elle était à l'origine non gérée C ++), vous devrez faire beaucoup plus que d'ajouter le commutateur / CLR. Pour que C # n'utilise la DLL, vous devrez créer des classes gérées et d'autres types basés sur CTS compatible avec C # (.NET). p>
Voir et classes Ref. P>
Un bon livre à lire sur le sujet (IMHO) est celui-ci un p>
Alors ... pour créer les classes gérés, dois-je le faire en C ++ / CLI, ou quoi? J'ai besoin d'un peu plus pour continuer.
Oui, vous avez besoin de plus pour continuer, je suggérerais de vérifier les liens. Il existe également des outils pour convertir C ++ en géré C ++ de Microsoft, cela peut également aider. Consultez ceci: Stackoverflow.com/Questtions/151776/...
Vous pouvez expercer les fonctions telles que les fonctions de style C (c'est-à-dire sans gérer) de votre DLL ou vous pouvez les exposer en tant qu'objets COM. P>
Comment puis-je les utiliser comme des objets COM?
Je suggérerais d'écrire une emballage COM et d'utiliser cela à la place. Regardez http://msdn.microsoft .com / fr-US / bibliothèque / 035x3kbh% 28v = vs.80% 29.aspx pour les instructions d'introduction. Vous voudrez effectuer vos interfaces d'objet dérivées d'IDISPATCH et d'être compatible automatisation, ce qui doit permettre à l'exécution de les consommer sans le maréchalage personnalisé. P>
Un bon avantage de cette approche est que vous pouvez continuer à construire votre code natif en tant que bibliothèque et à simplement effectuer votre projet COM. En outre, il s'agit toujours de code natif dans l'objet COM, il y a donc beaucoup moins de potentiel pour des problèmes inconnus (une fois que vous obtenez la couche d'interface fonctionne). P>
C'est ma suggestion, de toute façon. P>
Oui, enveloppez-le à un objet COM. Je crois que ATL est ce que vous devez faire cela avec le moins d'effort. P>
ATL? Vous parlez à quelqu'un qui n'a jamais fait cela auparavant.
Bibliothèque de modèles ActiveX. Cela fait partie de l'environnement de développement MS et utilisé pour la création d'objets COM dans C ++.