【问题标题】:Static library (.lib) to Python project静态库 (.lib) 到 Python 项目
【发布时间】:2010-09-08 13:50:13
【问题描述】:

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

【问题讨论】:

    标签: python dll static-libraries


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      很遗憾,没有。运行时加载需要动态链接库。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          如果您可以使用编译器,另一种选择可能是创建一个使用静态库的扩展模块。更多详情见the Python docs

          【讨论】:

            猜你喜欢
            • 2011-01-06
            • 1970-01-01
            • 1970-01-01
            • 2016-10-19
            • 2010-10-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多