Ответ 1
Вы не можете связать 64-разрядные EXE файлы с 32-разрядными DLL файлами или наоборот. В 64-битной ОС Windows DLL в Windows\System32 на самом деле являются 64-разрядными DLL. 32-разрядные версии находятся в Windows\SysWow64.
Я спрашиваю, потому что я заметил, что многие 64-битные EXE-ссылки связаны с 32-разрядными DLL файлами.
Например, мои 64-битные ссылки приложения MFC против user32.dll, urlmon.dll, wininet.dll
- все это 32-разрядные библиотеки DLL, которые находятся в windows\system32.
Итак, это какое-то специфическое для MS специфическое волшебство, которое относится к этим DLL, или же имеет обратную совместимость как бы для 64-битных EXE, которые должны использовать устаревшие 32-битные библиотеки DLL?
Вы не можете связать 64-разрядные EXE файлы с 32-разрядными DLL файлами или наоборот. В 64-битной ОС Windows DLL в Windows\System32 на самом деле являются 64-разрядными DLL. 32-разрядные версии находятся в Windows\SysWow64.
Позвоните 32 из 64, Конечно. (В Windows это называется WOW, что означает Windows на Windows). Но, наоборот, это не работает.
Здесь у вас есть объяснение того, как:
http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/
Надеюсь, что он служит.
Последняя версия Dependency Walker (здесь: http://www.dependencywalker.com/) устраняет эту проблему. Он находит правильные DLL и избегает неточных ошибок.
(Я опаздываю на вечеринку, но google все еще нашел этот вопрос, когда у меня была аналогичная проблема.)