2010-11-04 3 views
1

J'ai une source qui peut être compilée avec MINGW gcc ou avec VC++ (mais n'est pas dans un projet VS, elle a un makefile qui est lu par nmake) . Je compile avec nmake et il produit une lib statique et je voudrais compiler le code comme une DLL à utiliser avec mes assemblées managées.Intégrer une bibliothèque statique VC++ dans une DLL pour l'utiliser avec des assemblys gérés .Net

Est-il trivial de modifier le makefile pour sortir une DLL au lieu du statique? Ou dois-je en quelque sorte envelopper la bibliothèque statique dans une DLL? Je m'excuse parce que je suis sûr que cela a déjà été répondu mais je n'ai jamais eu à le faire auparavant et je ne sais pas par où commencer à lire. Je ne trouve pas non plus ce dont je pense avoir besoin sur SO, même si c'est probablement déjà demandé/répondu.

Répondre

2

Une enveloppe est probablement le chemin à parcourir ici. Vous créez une DLL C++ managée qui lie à la bibliothèque statique. Vous pouvez ensuite appeler la DLL C++ gérée à partir d'autres assemblys managés.

+0

Est-ce aussi simple que vous le faites sonner? Aurai-je besoin de définir explicitement des types et des signatures de méthodes ou puis-je simplement lier la lib et être bon à faire? – jlafay

+0

Ce n'est pas si simple. Vous auriez besoin d'écrire les méthodes wrapper. Ces méthodes seraient déclarées en tant que code managé. À l'intérieur de ces méthodes gérées, vous appelez les méthodes non managées (et effectuez toute transformation des arguments si nécessaire). –

+0

Qu'en est-il des cours? Est-il possible d'écrire une classe wrapper pour encapsuler ceux trouvés dans la lib statique? – jlafay

Questions connexes