Как заставить python распознавать чтение предварительно скомпилированного общего файла?
У меня есть пакет, который я создал в C++ и уже скомпилировал его в общую библиотеку.
Когда я связываю его с моей собственной основной функцией, я могу инициализировать пакет, вызывая функцию инициализации напрямую, initfoo, и все работает нормально.
Как заставить python распознать мою общую библиотеку как пакет, чтобы я мог просто ввести:
import foo
Запуск из обычного интерпретатора python?
Я не заинтересован в использовании distutils для компиляции файл, так как компиляция должна быть частью обычной системы сборки cmake. Мне просто нужно создать любые файлы пакетов, необходимые для загрузки моей общей библиотеки.
Обновление: Теперь он у меня работает. Проблема заключалась в том, что cmake по умолчанию использовал префикс lib для имен общих библиотек. Для исправления этого требуется
SET_TARGET_PROPERTIES(foo PROPERTIES PREFIX "")
И для Mac OS X
SET_TARGET_PROPERTIES(foo PROPERTIES SUFFIX ".so")
1 ответ:
Если у вас есть общая библиотека с экспортированным символом
initfoo
(Примечание: поскольку вы пометили Вопрос c++ - Убедитесь, что это символextern "C"
, иначе искажение имени помешает интерпретатору найти его), то это уже модуль Python и может быть загружен напрямую, без дальнейшей работы. Вам нужно только убедиться, что он находится на пути поиска, как и любой другой модуль.