Соединение 32-разрядной библиотеки к 64-разрядной программе

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

18
задан Krzysiek Goj 22 December 2009 в 01:26
поделиться

3 ответа

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

Лучший вариант - скомпилировать 32-битную (автономную) программу, которая может выполняться на 64-битной платформе (используя ia32), а затем использовать форму межпроцессного взаимодействия для связи с ней из 64-битной программы.

.
28
ответ дан 30 November 2019 в 07:23
поделиться

Это возможно, но не без серьезной магии за кулисами, и ответ вам не понравится. Либо эмулировать 32-битный процессор (не шучу), либо переключить основной процесс обратно на 32-битный. Однако эмуляция может быть медленной.

Это является доказательством концепции данной методики.

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

В большинстве случаев я считаю, что два процесса, а затем IPC между ними, на самом деле, может быть проще всего, как и предполагалось.

.
4
ответ дан 30 November 2019 в 07:23
поделиться

Для примера использования IPC для запуска 32-битных плагинов из 64-битного кода взгляните на open source NSPluginWrapper.

.
5
ответ дан 30 November 2019 в 07:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: