Похоже, вы загружаете 64-битную DLL в 32-битный процесс или наоборот.Вот как я мог бы отследить нарушающую DLL.
Первый шаг - запустить dumpbin.exe (используйте командную строку VS, чтобы получить его в PATH) на исполняемом файле, чтобы убедиться, что архитектура - это то, что вам нужно.ожидайте: dumpbin.exe /headers foo.exe
.В выводе заголовка файла вы должны увидеть значение "машина" "x86" или "x64".В дополнительном выводе заголовка вы должны увидеть магию «PE32» (для x86) или «PE32 +» (для x64).
Следующим шагом является запуск соответствующего обходчика зависимостей, доступного в www.dependencywalker.com , в зависимости от архитектуры (x86 или x64) исполняемого файла.Этот инструмент должен сообщить вам, находит ли он зависимость от путей поиска, отличных от той же архитектуры.
Если обходчик зависимостей обнаружит проблему, исправление будет состоять в том, чтобы заменить нарушающую библиотеку библиотекойтой же архитектуры или убедитесь, что правильная библиотека расположена перед неверной библиотекой на основе путей поиска.