我在 Windows 上开发,我到处搜索,没有找到任何人谈论这种事情。
我在桌面上制作了一个使用 MSVC 嵌入 Python 3.1 的 C++ 应用程序。我链接了 python31.lib 并将 python31.dll 包含在应用程序的运行文件夹中,与可执行文件一起。它工作得很好。我的扩展和嵌入代码确实有效,并且没有崩溃。
我将运行文件夹发送给没有安装 Python 的朋友,在脚本设置阶段应用程序崩溃了。
几个小时前,我在安装了 Python 2.6的笔记本电脑上试用了该应用程序。我遇到了和朋友一样的崩溃行为,通过调试发现是 Py_Initialize() 调用失败。
我在笔记本电脑上安装了 Python 3.1,而没有更改应用程序代码。我运行它,它运行完美。我卸载了 Python 3.1,应用程序再次崩溃。我在我的应用程序中放入代码以从本地 python31.dll 动态链接,以确保它正在使用它,但我仍然遇到崩溃。
我不知道解释器是否需要比 DLL 更多的东西来启动或什么。我一直无法找到这方面的任何资源。Python 文档和其他指南似乎从未解决如何在不让用户在本地安装 Python 的情况下分发使用 Python 嵌入的 C/C++ 应用程序。我知道这在 Windows 上比在 Unix 上更严重,但我已经看到许多在本地嵌入 Python 的 Windows C/C++ 应用程序,我不确定它们是如何做到的。
除了 DLL,我还需要什么?为什么我在安装 Python 时它可以工作,然后在我卸载它时停止工作?听起来应该如此微不足道;也许这就是为什么没有人真正谈论它的原因。不过,我无法真正解释如何处理这个崩溃问题。
非常感谢您提前。