Я работаю над попыткой заставить старую программу перекомпилироваться и запускаться, и у меня возникают проблемы с получением dll для ссылки на ее зависимости во время выполнения.
Я скомпилировал программу (решение это файл .sln) в Visual Studio 2015. Когда я go запускаю один из встроенных исполняемых файлов, я получаю следующую ошибку:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'XYZ.dll' or one of its dependencies. The specified module could not be found.
Я использовал VS2015 Командная строка x86 ARM Cross Tools для запуска команды:
dumpbin /dependents XYZ.dll
, чтобы получить список зависимостей XYZ.dll, который появляется со списком:
VCRUNTIME140.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
KERNEL32.dll
ABC.dll
mscoree.dll
где AB C .dll - еще одна DLL в той же папке. Я проверил, и все остальные файлы находятся в C: \ Windows \ System32. У меня нет доступа к DependencyWalker, так как мой компьютер использует windows 10, но я использовал команду git bash ldd , и когда я запускаю
ldd XYZ.dll
Я получаю результат
KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffc60750000)
??? => ??? (0x7ffc588a0000)
??? => ??? (0x7ffc3c8d0000)
??? => ??? (0x7ffc50fa0000)
??? => ??? (0x7ffc378b0000)
(Я не перечислил все остальные dll, которые перечислены, но KERNEL32.dll был единственным .dll-файлом, который был показан с использованием dumpbin, который показал вверх в списке ldd). Когда я go в VS 2015 в свойствах проекта, KERNEL32.DLL отображается в Компоновщик -> Ввод -> Дополнительные зависимости.
Я попытался переместить все зависимости dll XYZ.dll в в ту же папку, где он находится. Я переустановил распространяемый Microsoft Visual C + 2015 (x64) и распространяемый Microsoft Visual C + 2015 (x86). Я посмотрел на зависимости других проектов в рамках решения. Например, когда я запускаю
ldd DEF.dll
, он может найти
VCRUNTIME140.dll => /c/WINDOWS/SYSTEM32/VCRUNTIME140.dll (0x7ffc3c8d0000)
Любые идеи о том, как это исправить, приветствуются!
Дополнительная информация:
Появляется одно и то же сообщение об ошибке при компиляции в режиме Release или Debug. Платформа активного решения - x64.