Загрузите 32-разрядную общую библиотеку из 64-разрядного приложения? - программирование
Подтвердить что ты не робот

Загрузите 32-разрядную общую библиотеку из 64-разрядного приложения?

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Есть ряд рабочих обходов, о которых я знаю:

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

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