1.Do not build Python into your .exe file directly. On Windows,Python must be a DLL to handle importing modules that are themselves DLL’s. (This is the first key undocumented fact.) Instead,link to pythonNN.dll; it is typically installed in C:\Windows\System. NN is the Python version,a number such as “23” for Python 2.3.
我的问题是为什么Python必须是一个DLL?如果在我的情况下,主机应用程序不是.exe,而且是DLL,我可以在其中构建Python吗?或者,也许,这个说明意味着第三方C扩展依赖于pythonN.N.dll存在而其他DLL不会这样做?假设我真的想拥有一个DLL,我该怎么办?
我看到有dynload_win.c文件,它似乎是在Windows上导入C扩展的模块,据我所知,它扫描扩展文件以找到它导入的pythonX.X.dll;但我对Windows没有经验,我不太了解那里的所有代码.
但是,无论你如何嵌入Python,你都不能只使用DLL,也不能只使用任何DLL. ABI在Python版本之间发生了变化,因此如果您针对Python 2.6编译代码,则需要python26.dll;你不能使用python25.dll或python27.dll. Python不仅仅是一个DLL;它还需要它的标准库,其中包括扩展模块(虽然它们具有.pyd扩展名,但它们本身就是DLL.)您遇到的dynload_win.c中的代码用于加载这些DLL,与加载pythonXY无关. DLL.