2 votes

Lien (au hasard?) échoue avec Visual debug DLLs

J'ai régulièrement ce problème sous Visual 2005 ou 2008 :

Lorsque je compile un tas de DLL (en C natif, C++, managé), parfois, quelques-unes d'entre elles ne se lient pas correctement avec certaines DLL de débogage de Microsoft. La sortie ne mentionne rien (pas de avertissement, pas d'erreur). Je ne m'en rends compte que lorsque je lance mon programme et reçois une "Exception module introuvable" sans plus d'explications.

Quand j'ouvre mes DLL avec Dependency Walker, certaines manquent de MSVCR90D.DLL et MSVCP90D.DLL. Si je suis chanceux, je n'ai qu'à reconstruire la DLL corrompue pour en obtenir une valide. Dans le pire des cas, la reconstruction produit une autre DLL corrompue, jusqu'à un moment mystérieux (heures ou jours plus tard) où j'obtiens une DLL valide... ça semble fou, n'est-ce pas ?

La DLL valide a ce type de chemin :

c:\windows\winsxs\x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f\MSVCP90D.DLL

Cela me rend fou !... Des idées ? Merci.

1voto

jeffamaphone Points 31732

Construire avec /MT au lieu de /MD.

1voto

Janet Rans Points 11

Peut-être qu'il se confond sur lequel dll utiliser. Faites une recherche sous C:\Program files\Visual Studio??? pour MSVCR90D.DLL et il devrait se trouver sous C:\Program files\Visual Studio???\sdk...\bin Je ne suis pas sûr de quelle version vous avez. Ensuite, dans votre environnement PATH, configurez ce chemin pour qu'il regarde dans ce chemin de bin.

J'ai vu de nombreuses fois où il y a plusieurs dlls du même nom et le programme se confond sur lequel il doit lier. Essayez cela et voyez si cela aide

Janet

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X