我是在Windows上开发的,我到处搜索都没发现有人在谈论这类事情。
我在桌面上制作了一个C++应用程序,使用MSVC嵌入了Python 3.1。我链接了python31.lib并将python31.dll与可执行文件一起包含在应用程序的运行文件夹中。效果很好。我的扩展和嵌入代码绝对有效,没有崩溃。
我将run文件夹发送给了我的朋友,他没有安装Python,在脚本安装阶段应用程序会为他崩溃。
几个小时前,我在笔记本电脑上试用了安装了Python2.6的应用程序。我得到了和我朋友一样的崩溃行为,通过调试发现失败的是Py_Initialize()调用。
我在笔记本电脑上安装了Python3.1,但没有更改应用程序代码。我跑得很好。我卸载了Python3.1,应用程序再次崩溃。我在我的应用程序中输入代码,从本地python31.dll动态链接,以确保它正在使用它,但我仍然会遇到崩溃。
我不知道解释器是否需要更多的DLL来启动或什么。我找不到这方面的任何资料。Python文档和其他指南似乎从来没有解决如何使用Python嵌入来分发C/C++应用程序,而不需要用户在本地安装Python。我知道Windows上的问题比UNIX更重要,但我看到了许多Windows Pc/C++应用程序,它们在本地嵌入Python,我不确定它们是如何做到的。
除了动态链接库,我还需要什么?为什么在安装Python时它会工作,然后在卸载Python时停止工作?听起来应该很琐碎;也许这就是为什么没人真正谈论它。尽管如此,我还是无法解释如何处理这起事故。
提前非常感谢。