wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Windows上嵌入Python:为什么它必须是DLL?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试编写一个嵌入Python的软件插件.在Windows上,插件在技术上是一个dll(这可能是相关的). Python Windows FAQ说: 1.Do not build Python into your .exe file directly. On Windows, Python must be a DLL to handle imporTing modules that are t
我正在尝试编写一个嵌入Python的软件插件.在Windows上,插件在技术上是一个DLL(这可能是相关的). Python Windows FAQ说:

我的问题是为什么Python必须是一个DLL?如果在我的情况下,主机应用程序不是.exe,而且是DLL,我可以在其中构建Python吗?或者,也许,这个说明意味着第三方C扩展依赖于pythonN.N.dll存在而其他DLL不会这样做?假设我真的想拥有一个DLL,我该怎么办

我看到有dynload_win.c文件,它似乎是在Windows上导入C扩展的模块,据我所知,它扫描扩展文件以找到它导入的pythonX.X.dll;但我对Windows没有经验,我不太了解那里的所有代码.

您需要链接到pythonXY.dll作为DLL,而不是将相关代码直接链接到您的可执行文件,因为否则Python运行时无法加载其他DLL(它依赖的扩展模块.)如果你自己制作DLL理论上可以直接链接该DLL中的所有Python代码,因为它不会在可执行文件中结束,但仍然在DLL中.但是,您必须注意正确地进行链接,因为几乎所有标准工具(如distutils)都不会为您执行此操作.

但是,无论你如何嵌入Python,你都不能只使用DLL,也不能只使用任何DLl. ABI在Python版本之间发生了变化,因此如果您针对Python 2.6编译代码,则需要python26.dll;你不能使用python25.dll或python27.dll. Python不仅仅是一个DLL;它还需要它的标准库,其中包括扩展模块(然它们具有.pyd扩展名,但它们本身就是DLl.)您遇到的dynload_win.c中的代码用于加载这些DLL,与加载pythonXY无关. DLl.

简而言之,为了在您的插件中嵌入Python,您需要使用插件发布Python,或者要求已经安装了正确的Python版本.

大佬总结

以上是大佬教程为你收集整理的在Windows上嵌入Python:为什么它必须是DLL?全部内容,希望文章能够帮你解决在Windows上嵌入Python:为什么它必须是DLL?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。