Загрузить 32-битную разделяемую библиотеку из 64-битного приложения? - PullRequest
14 голосов
/ 19 апреля 2011

У меня есть общая библиотека, которая скомпилирована как 32-разрядная.Могу ли я использовать его из 64-разрядного приложения или мне нужно также скомпилировать разделяемую библиотеку как 64-разрядную?

Ответы [ 2 ]

14 голосов
/ 19 апреля 2011

Нет, вы не можете загрузить 32-битную библиотеку в 64-битное приложение обычными способами.

Есть несколько хитрых хаков, таких как 32-битное приложение, которое загружает библиотеку и экспортирует функции через интерфейс IPC, но если у вас есть возможность компилировать библиотеку как 64-битную, то далеко лучший выбор.

5 голосов
/ 17 октября 2012

Нельзя динамически или статически загружать 32-разрядную библиотеку из 64-разрядного приложения или наоборот.

Есть несколько обходных путей, о которых мне известно:

  1. Создание 64-разрядной версии DLL
  2. Создание 32-разрядной версииприложения
  3. Внедрение COM-прокси-объекта (также называемого суррогатом) в качестве коммуникационного посредника. Описано здесь .
  4. Разместите DLL в отдельном (32-разрядном) EXE-файле и используйте метод IPC

Существует ряд методов межпроцессного взаимодействия (IPC).Вот несколько примеров:

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