He creado un proyecto DLL en VS 2005 para C++ nativo Win32/no administrado, llámalo myProj.dll. Depende de una DLL comercial de terceros que a su vez depende de msvcr90.dll (supongo que fue creada a partir de un proyecto de VS 2008). Lo llamaré thirdParty.dll.dependencia de msvcr90.dll en el proyecto VS 2005 C++
Mi proyecto DLL se compila perfectamente en VS2005. Creé una aplicación de prueba (de nuevo, VS 2005 Win32 C++) que enlaza con myProj.lib. (Por otro lado, a juzgar por el tamaño pequeño de la .lib y por el hecho de que, en tiempo de ejecución, la aplicación debe ubicar myProj.dll, supongo que la .lib es solo un contenedor para una llamada a loadLibrary() que carga el DLL real; ¿es así de cerca?)
Mi problema es que, en tiempo de ejecución, la aplicación de prueba no puede encontrar msvcr90.dll (ni msvcp90.dll), cuya dependencia deriva del thirdParty.dll.
He instalado el paquete de redist de Microsoft y también todas las bibliotecas de C++ estándar (9.0) en c: \ WINDOWS \ WinSxS \ x86_Microsoft.VC90.CRT _.... Además, si señalo el ladrón de dependencias en thirdParty.dll, felizmente resuelve las referencias a esa ubicación.
Pero, si señalo depends.exe en mi aplicación de prueba (.exe) o myProj.dll, msvcr90.dll y msvcp90.dll no se encuentran.
Supongo que hay algo que debo configurar en VS2005 para que el .exe o myProj.dll conozcan la ubicación de las versiones 9.0 de las bibliotecas std C++ (presumiblemente donde el paquete de redistribución las instaló en C: \ WINDOWS \ WinSxS), pero parece que no puedo descifrar de qué se trata. ¿Estoy en el camino correcto?
observo que, si simplemente copiar los archivos * 90.dll msvc a mi directorio de aplicación, a continuación, la dependencia se ha resuelto, pero me sale el error de tiempo de ejecución sobre la carga incorrecta de std C++ DLL, etc.
Gracias inmensamente por adelantado.
Quizás esa sea la mejor manera. Sin embargo, puede haber algo corrupto. Si ese es el caso, intente con una instalación limpia de Windows (vmware). De esa manera, puede escribir todo lo que está haciendo para explicarles los pasos para reproducir este problema. – wimh
Gracias, Wimmel. Sí, eso es lo que estoy pensando que haré hoy. Y, también estoy en contacto con la gente de terceros. Por cierto, una cosa que he olvidado mencionar es que en realidad hay un tercer componente: una biblioteca enlazada estáticamente (.lib) de otra tercera parte. Incluye el clib. –
(límite de caracteres tontos!) ... y entonces me veo forzado a compilar myProj.dll con/MT (d) (nuevamente, con VS2005). –