2009-09-17 14 views
1

J'écris une DLL pour un très vieux programme qui a été compilé en utilisant Visual Studio 6. Ce programme exporte des fonctions qui renvoient des pointeurs vers des conteneurs de bibliothèque standard, et je suis (sans surprise) confronté à des problèmes quand je tente de faire quelque chose avec eux à partir de ma DLL, qui est compilée sous VS 7. Le code source du programme n'est pas disponible, donc le recompiler avec VS 7 n'est pas une option.C++ - Visual Studio CRT

Y a-t-il un moyen de reconfigurer VS 7 pour le lier avec les bibliothèques d'import du VS 6 CRT? J'ai installé VS 6 (et donc tous les fichiers .libs et en-têtes nécessaires), mais je préfèrerais utiliser un IDE plus récent. J'ai essayé de vérifier "Ignorer les bibliothèques par défaut" dans VS 7 et d'ajouter les chemins d'accès lib/include de VS 6 aux paramètres du projet, puis d'ajouter MSVCPRT.LIB aux dépendances supplémentaires, mais je reçois juste une tonne d'externes non résolus Je construis le projet.

Merci beaucoup!

Répondre

3

This pourrait aider.

+0

Non, il s'agit de l'exécution C. Il ignore totalement C++. Pas de surprise, parce que c'est beaucoup plus difficile. – MSalters

+0

Merci beaucoup pour les réponses. Ce lien semble très prometteur, mais si je ne peux pas utiliser les fonctions d'exécution C++, je ne pense pas que cela fonctionnera. Je pourrais finir par aller avec la suggestion de Tim et relier une bibliothèque de wrapper statique à mon projet. Je pensais que je devrais faire quelque chose comme ça, mais espérais qu'il y aurait une solution plus simple. –

2

Le CRT et le STL ont tous deux été révisés majoritairement entre VS6 et VS7. Si vous pouvez vraiment faire fonctionner cela, je serais surpris.

Je construirais probablement un module "wrapper" dans VS6 qui expose les données d'une manière plus neutre.