在win2003下,安装了vs2008,安装了Python2.7,按照网上的教程,新建了一个控制台程序,在选项里包含了Python的libs文件,包含了Python的inclue文件,同时修改了include里的pyconfig.h中的Python27_d.lib为Python27.lib,意思debug下也用Python27.lib这个动态库,然后开始编码,代码如下:
#include <python.h>
int main()
{
Py_Initialize();//初始化Python
PyObject *pModule = NULL;
PyObject *pFunc = NULL;
pModule = PyImport_ImportModule("test");//调用的文件名
pFunc = PyObject_GetAttrString(pModule,"Hello");//调用的函数
PyEval_CallObject(pFunc,NULL);//调用函数
Py_Finalize();//与Py_Initialize()对应
return 0;
}
其中对应的test.py内容如下:
#Filename test.py
def Hello():
print "Hello,World!"
开始调试,编译没有报错,当运行到PyEval_CallObject语句时报错,信息如下:
PythonTest1.exe 中的 0x1e07b856 处未处理的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突
求大神指教
程序内存出现了问题!谢谢回复<aclass='referer'target='_blank'>@xuan_general:这个肯定是你那个函数或者函数上下的内存开辟有问题比如内存开辟失败但是往内存写值或者开辟的内存小于你要写入的内存都有可能需要你自己结合实际情况查看代码但是为什么内存会出错呢<spanstyle="font-family:Verdana,sans-serif,宋体;font-size:14px;line-height:22px;background-color:#FFFFFF;">PyEval_CallObject第二个参数别传NULL,传Py_None是的,但是运行的时候,报错了说argumentlistmustbeatuplein<module'threading'from'C:\Python27\lib\threading.pyc'>ignored
<spanstyle="font-size:14px;line-height:22px;">把test.py放到c++项目的Debug文件夹里,看看是不可以了……
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。