2010-10-19 21 views
0

J'ai une ancienne bibliothèque de projets msvs2005 C++ (dll). J'ai ouvert le projet sur WindowsXP workstation avec msvs2008 installé et le code compilé très bien. Mais quand j'essaye de l'employer avec le module exécutable j'observe "my-library.dll ou l'un de ses dépendances n'a pas été trouvé". Dépendance Walker me dit que MSVCP80.DLL, MSVCR80.DLL, MSVCR90D.DLL sont manqués. MSJAVA.DLL est manqué aussi. J'ai installé le package redistribuable Visual C++ 2008, mais le problème persiste. Les bibliothèques requises n'ont pas été placées dans le dossier System32.MSVCR80.DLL est manquant. Que dois-je installer ou que dois-je faire dans la configuration du projet C++?

Que dois-je installer sur le poste de travail ou que dois-je tromper dans la configuration du projet pour éviter ce problème?

Merci d'avance!

+0

Vous pouvez télécharger ces fichiers DLL et les mettre en System32 –

+0

Oui, mais peut-être y at-il une façon plus civilisée: une sorte de stratégie de redistribution pour le projet C++ dans les paramètres du projet msvs ou certains paquets msi prêts? –

+2

@Armen Tsirunyan: OMFG, c'est juste faux. Prenez votre suggestion Dodgey DLL HELL loin de vous diabolique. –

Répondre

2

installé le package redistribuable Visual C++ 2008 mais le problème persiste.

D'où avez-vous obtenu le redist?

Il existe une variété de versions de la redist, celle qui vient avec MSVC est la plus susceptible d'être la bonne. Il y a cependant un tas de choses qui sont arrivées telles que les mises à jour de sécurité ATL et ainsi de suite ce que vous devez regarder est l'information de numéro de version qui serait présente dans le manifeste, puis trouvez la bonne version (ou plus récente) à installer.

Veillez également à ce que le correcteur de débogage soit nécessaire si vous souhaitez utiliser la version de débogage de la bibliothèque sur une autre machine.

3

Vous devez installer le Visual C++ 2005 Redistributable Package ou le Visual C++ 2005 SP1 Redistributable Package, car votre ancien code a été compilé avec Visual Studio 2005 (8.0).

Utilisez le composant redistribuable SP1 si le code a été compilé avec VS 2005 SP1.

+0

Merci Frédéric, mais depuis que je l'ai importé dans MSVS2008, peut-être que la recompilation est suffisante? –

+1

Il est clairement à la recherche de l'exécution 8.0, c'est-à-dire VS 2005. Votre bibliothèque héritée peut dépendre d'une autre bibliothèque externe qui nécessite cette exécution. –

5

En tant que victime répétée des assemblées côte à côte depuis que cette horreur impie s'est déchaînée il y a quelques années, j'ai dû faire face à cela sur une base régulière. @Frederic a raison de dire que l'installation de la redistribuable avec votre installateur est idéale mais vous pouvez aussi avoir d'autres problèmes. Cela dit, si vous avez accès à une machine Vista/Windows7, vous pouvez utiliser sxstrace. C'est un outil non intuitif pour repérer ces problèmes. Vous pouvez utiliser les informations générées à l'aide de cet outil pour déterminer exactement ce que votre application recherche.

  1. exécuter sur la ligne de commande

    sxstrace.exe -logfile: sxstrace.st

  2. Maintenant, lancez l'application et obtenez l'erreur

  3. Maintenant, cliquez sur Entrée pour arrêter la trace
  4. maintenant entrez:

    sxstrace Parse -logfile: sxstrace. st -outfile: sxstrace.txt

  5. Maintenant, vous pouvez regarder le fichier de sortie et voir exactement ce qui s'est passé lors de l'exécution de l'application.

Source: http://blogs.msdn.com/b/junfeng/archive/2006/04/14/576314.aspx

, vous pouvez aussi jeter un oeil à cet article sur msdn car il aide à la résolution de ces problèmes: http://msdn.microsoft.com/en-us/library/ms235342(VS.80).aspx