C++代码中嵌入Python之后程序的发布问题

一个很简单的程序:

 

#include "boost/python.hpp" int _tmain(int argc, _TCHAR* argv[]) { Py_Initialize(); PyRun_SimpleString("print 'hello'"); Py_Finalize(); system("pause"); return 0; }

 

运行没问题。但我拿到一个XP环境下始终无法运行(XP是虚拟机中的,除了驱动什么都没装,是MSDN版的)。我已经在XP下安装了VC2005运行库,把python26.dll、boost_python-vc80-mt-1_39.dll、boost_python-vc80-mt-gd-1_39.dll都拷贝到程序所在的目录了还是不行。程序是Release发布的。一运行就提示:

应用程序正常初始化(0xc0150002)失败。请单击“确定”,终止应用程序。


google了半天无果。

 

今天上午我在xp下运行了一个py2exe打包的python程序,因为它是for2.6的,所以要安装VC2008的运行库,回头再运行了一下昨天这个C++的小程序居然行了。

不过还是有错误。然后我把py2exe打包后dist的东西都拷了进来,再把Library.zip解压出来,运行就成功了!我又在C++里面用Python访问了数据库,运行同样没问题!

看来以后嵌入Python的C++程序最好不用VC8写,就用纯C++吧。

 

PS: 如果是用py2exe打包的,发布时手动把vs2008下的redist/x86/Microsoft.VC90.CRT 下面的四个文件都copy到py2exe打包生成的dist目录下,就可以直接copy dist目录到任意未安装python或08运行库的环境下运行了。

你可能感兴趣的:(Pythoner)