Я создал проект DLL в VS 2005 для собственного Win32 / неуправляемого C ++, назовите его myProj.dll. Это зависит от сторонней коммерческой DLL, которая, в свою очередь, зависит от msvcr90.dll (я предполагаю, что она была построена из проекта VS 2008). Я назову это ThirdParty.dll.
Мой проект DLL прекрасно собирается в VS2005. Я создал тестовое приложение (опять же VS 2005 Win32 C ++), которое ссылается на myProj.lib. (Помимо этого, судя по небольшому размеру .lib и тому факту, что во время выполнения приложение должно найти myProj.dll, я предполагаю, что .lib - это просто оболочка для вызова loadLibrary (), который загружает фактическую DLL; это близко?)
Моя проблема заключается в том, что во время выполнения тестовое приложение не может обнаружить msvcr90.dll (ни msvcp90.dll), зависимость от которой связана с ThirdParty.dll.
Я установил Microsoft Redist-пакет и все библиотеки std (9.0) C ++ в c: \ WINDOWS \ WinSxS \ x86_Microsoft.VC90.CRT _.... Более того, если я укажу обходчику зависимостей на thirdParty.dll, он с радостью разрешит ссылки на это местоположение.
Но, если я укажу figure.exe на моем тестовом приложении (.exe) или myProj.dll, msvcr90.dll и msvcp90.dll не найдены.
Я предполагаю, что в VS2005 нужно что-то настроить, чтобы .exe или myProj.dll знали о расположении 9.0 версий библиотек std C ++ (предположительно, где пакет redist установил их в C: \ WINDOWS \ WinSxS), но я не могу понять, что это такое. Я на правильном пути?
Замечу, что если я просто скопирую файлы msvc * 90.dll в каталог своего приложения, то зависимость разрешится, но я получаю ошибку во время выполнения о неправильной загрузке библиотек DLL std c ++ и т. Д.
Огромное спасибо заранее.