静态库(.lib)到Python项目

时间:2010-09-08 13:50:13

标签: python dll static-libraries

是否可以将.lib库中的模块导入Python程序(就像.dll一样简单)?

4 个答案:

答案 0 :(得分:3)

理论上,是的;在实践中,可能不是 - 当然也不像DLL一样简单。静态库本质上只是对象文件的集合,需要一个完整的链接器来正确解析它们可能包含的所有重定位引用。有可能采用静态库并简单地链接其内容以形成共享库,但这需要将静态库构建为位置无关代码(PIC),这是不能保证的。从理论上讲,完全链接器无法在运行时完成链接库的工作是没有理由的,但实际上并没有这样做的现成代码。您最好的选择可能是追踪源库或库的共享版本。

答案 1 :(得分:2)

不幸的是,没有。运行时加载需要动态链接库。

答案 2 :(得分:0)

您是否可以访问源代码?或者至少是一个头文件?如果这样做,那么您可以创建一个链接到库的共享库或Python扩展。既然你提到了DLL,我会假设你正在使用Windows。 This tutorial可能有用。

答案 3 :(得分:0)

你有一个静态库,或者你有一个.lib文件,并假设它是一个静态库?在Windows上,.lib库可以是导入库或静态库。导入库与同名的dll一起创建(例如kernel32.dll和kernel32.lib)。它在链接时用于填充可执行文件的导入地址表。静态库包含将在链接时复制到可执行文件中的代码。

如果您有权访问编译器,则另一个选项可能是创建一个使用静态库的扩展模块。有关详细信息,请参阅the Python docs