Почему моя 64-битная программа успешно вызывает 32-битную DLL? - PullRequest
3 голосов
/ 06 апреля 2020

У меня есть программа C#, скомпилированная для платформы target x64. Он использует C1.C1Zip, файл DLL для обработки файлов Zip. Рассматривая C1.C1Zip.dll, это 32-битная DLL (PE Deconstructor говорит так - 32-битные слова). Но моя программа определенно 64-разрядная (диспетчер задач говорит об этом - на вкладке «Сведения» указана 64-разрядная платформа).

Я только что успешно запустил код, который использовал DLL C1.C1Zip, и он работал нормально. Мне дали понять, что это невозможно.

Почему так происходит?

Какую дополнительную диагностику я могу запустить, чтобы убедиться, что моя основная программа действительно 64-битная?

1 Ответ

3 голосов
/ 06 апреля 2020

Потому что это не нативный dll для начала. Это управляемый код - только байт-код. В этом случае 32- или 64-битные значения относятся к исходному exe-файлу (определите, будет ли процесс выполняться 32- или 64-битным), но не к загруженным собственным сборкам позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...