2010-09-08 2 views

ответ

2

К сожалению, нет. Библиотеки динамических ссылок необходимы для загрузки во время выполнения.

0

Есть доступ к исходному коду? Или, по крайней мере, файл заголовка? Если да, то вы можете либо создать общую библиотеку, либо расширение Python, которое связывается с библиотекой. Поскольку вы упомянули DLL, я предполагаю, что вы работаете в Windows. This tutorial может быть полезным.

3

Теоретически, да; на практике, вероятно, нет - и, конечно, не так просто, как DLL. Статические библиотеки - это, по сути, только коллекции объектных файлов, и им нужен полный компоновщик, чтобы правильно разрешать все ссылки на перемещение, которые они могут содержать. Возможно, вы сможете взять свою статическую библиотеку и просто связать ее содержимое с целью создания общей библиотеки, но для этого потребуется, чтобы статическая библиотека была построена как независимый от позиции код (PIC), что не гарантируется. Теоретически нет никакой причины, по которой работа, которую полный компоновщик сделает, чтобы связать библиотеку, не может быть выполнена во время выполнения, но на практике для этого нет готового кода. Ваша лучшая реальная опция - это, вероятно, отслеживание исходной или общей версии библиотеки.

0

У вас есть статическая библиотека или у вас есть .lib-файл и предполагается, что это статическая библиотека? В Windows библиотека .lib может быть библиотекой импорта или статической библиотекой. Библиотека импорта создается вместе с DLL с тем же именем (например, kernel32.dll и kernel32.lib). Он используется во время соединения для заполнения таблицы адресов импорта исполняемого файла. Статическая библиотека содержит код, который будет скопирован в исполняемый файл во время соединения.

Если у вас есть доступ к компилятору, другой возможностью может быть создание модуля расширения, который использует статическую библиотеку. Для получения дополнительной информации см. the Python docs

Смежные вопросы