Включить 32-битную библиотеку в существующее 64-битное приложение - PullRequest
0 голосов
/ 05 августа 2020

У меня есть существующий 64-битный проект Qt Linux (C / C ++), теперь я хотел добавить дополнительное оборудование. К сожалению, поставщик оборудования предоставляет SDK только с 32-битным двоичным кодом C .so.

Простое включение библиотеки приводит к такой ошибке:

/usr/bin/x86_64-linux-gnu-ld: skipping incompatible /home/SDK/lib when searching for -example
/usr/bin/x86_64-linux-gnu-ld: cannot find -example

Есть ли способ включить эту библиотеку в мой существующий проект?

Я обнаружил Смешивание 32- и 64-битных библиотек в Linux (g cc) , но, возможно, есть некоторые изменения, поскольку это уже 7 лет.

Заранее спасибо!

1 Ответ

1 голос
/ 05 августа 2020

ABI для x86 и amd64 полностью различаются на Linux, поэтому вы не можете напрямую вызывать 32-битные библиотеки из 64-битного кода. Тем не менее, вы можете достичь своей цели, создав отдельную 32-битную программу, которая передает вызовы в библиотеку через прокси и предоставляет их через REST, WSDL, Protobuf или ваш любимый способ выполнения IPC, а затем выполняет эти вызовы из 64-битной процесс.

...