Привязки на C и Python с использованием ранее созданной динамической общей библиотеки

#python #c #binding #cmake #swig

#python #c #привязка #cmake #swig

Вопрос:

Я оборачиваю код C для использования в Python с помощью SWIG. Модуль C , который я упаковываю, имеет зависимости C от других модулей, расположенных в другом пакете. Однако, вместо прямого импорта / включения этих файлов, я хотел бы импортировать ранее созданную библиотеку Python / dynamic shared library для работы с зависимостями. Я хочу использовать этот метод, потому что я не хочу жестко кодировать файлы в этом пакете, чтобы они работали. У меня просто будет доступ к общей библиотеке.

В настоящее время без импорта библиотеки компиляция нового модуля с файлом-оболочкой приводит к ошибке: «неустранимая ошибка: строка: компиляция такого файла или каталога не завершена». поскольку файл заголовка, от которого зависит новый модуль, недоступен в этом пакете. Я не хочу копировать требуемые заголовки, от которых зависит новый модуль, в этот пакет.

Я хотел бы знать, возможно ли это либо в файле интерфейса SWIG, либо в CMake.

Спасибо за вашу помощь.

Комментарии:

1. Не уверен, о чем вы спрашиваете, возможно, если вы опубликуете код Python, который вы могли бы написать, и какие части кода взяты из какого модуля, и какие модули обернуты SWIG, тогда ваш вопрос будет более ясным.

2. Если код C вызывает другой код C , то эти другие библиотеки также должны быть связаны в ‘.so’ . Это означает, что вам нужно иметь по крайней мере заголовки для этих других библиотек, доступных на этапе компиляции / компоновки. Виртуальная машина python ожидает, что сможет полностью передать вычисления на уровень .so.