У меня есть 32-разрядная .so библиотека только для двоичного файла, и я должен генерировать 64-разрядную программу, которая использует ее. Существует ли способ обернуть или преобразовать его, таким образом, это может использоваться с 64-разрядной программой?
Нет. Вы не можете напрямую связываться с 32-битным кодом внутри 64-битной программы.
Лучший вариант - скомпилировать 32-битную (автономную) программу, которая может выполняться на 64-битной платформе (используя ia32), а затем использовать форму межпроцессного взаимодействия для связи с ней из 64-битной программы.
.Это возможно, но не без серьезной магии за кулисами, и ответ вам не понравится. Либо эмулировать 32-битный процессор (не шучу), либо переключить основной процесс обратно на 32-битный. Однако эмуляция может быть медленной.
Это является доказательством концепции данной методики.
Затем сохраняйте таблицу каждого доступа к памяти к 32-битной библиотеке и из нее и синхронизируйте их. До теоретической полноты очень сложно дойти, но что-то работающее должно быть довольно легко, но очень утомительно.
В большинстве случаев я считаю, что два процесса, а затем IPC между ними, на самом деле, может быть проще всего, как и предполагалось.
.Для примера использования IPC для запуска 32-битных плагинов из 64-битного кода взгляните на open source NSPluginWrapper.
.