У меня есть приложение WPF, использующее .Net 3.5, которое загружает библиотеку времени выполнения C из:
C: \ Windows \ WinSxS \ x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4926_none_508ed732bcbc0e5a \ msvcr90.dll.
Давайте назовем это MyApp.Exe
В эту же папку также входят msvcp90.dll и msvcm90.dll.
Когда я запускаю определенное диалоговое окно, мне нужно загрузить определенную DLL, которая является C ++ DLL, используя CLR (назовем это MyPlugin.dll). MyPlugin.dll находится в той же папке, что и MyApp.exe, однако с помощью зависимости.exe я вижу, что он не находит msvcm90.dll или msvcp90.dll.
Если я пытаюсь просто скопировать msvcm90.dll и msvcp90.dll в ту же папку, что и MyPlugin.dll, он находит библиотеки DLL, но появляется сообщение об ошибке R6034 «Приложение неправильно попыталось загрузить библиотеку времени выполнения C ».
Как мне обойти это? Есть ли способ заставить MyApp.exe просто искать библиотеки DLL времени выполнения в текущей папке?
[редактировать]
Я создал исполняемый файл C ++ (назовем его CExec.exe), который пытается загрузить MyPlugin.dll и поместил его в ту же папку, что и MyPlugin.dll и MyApp.exe. CExec.exe может загрузить MyPlugin.dll, но MyApp.exe (приложение C #) не может загрузить MyPlugin.dll. У меня есть ощущение, что моя проблема связана с этим:
http://connect.microsoft.com/VisualStudio/feedback/details/361682/vc9-sp1-generates-manifests-with-the-wrong-version-number