【发布时间】:2010-10-17 11:38:53
【问题描述】:
我正在尝试编写一个嵌入 Python 的软件插件。在 Windows 上,插件在技术上是一个 DLL(这可能是相关的)。 Python Windows FAQ 说:
1.不直接将 Python 构建到您的 .exe 文件中。在 Windows 上,Python 必须是一个 DLL 来处理本身就是 DLL 的导入模块。 (这是第一个未记录的关键事实。)相反,链接到 pythonNN.dll;它通常安装在 C:\Windows\System 中。 NN 是 Python 版本,一个数字,例如 Python 2.3 的“23”。
我的问题是为什么 Python 必须是 DLL?如果在我的情况下,主机应用程序不是 .exe,而是 DLL,我可以在其中构建 Python 吗?或者,也许,这个注释意味着第三方 C 扩展依赖于 pythonN.N.dll 存在而其他 DLL 不会这样做?假设我真的想要一个 DLL,我应该怎么做?
我看到有dynload_win.c 文件,它似乎是在Windows 上导入C 扩展的模块,据我所知,它扫描扩展文件以查找它导入的pythonX.X.dll;但我没有使用 Windows 的经验,也不太了解那里的所有代码。
【问题讨论】: