开发者社区> 问答> 正文

vs2008的c++下嵌入Python报错,新手求指教?报错

在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 时发生访问冲突

求大神指教

展开
收起
爱吃鱼的程序员 2020-06-22 17:56:11 556 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    程序内存出现了问题!谢谢回复<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文件夹里,看看是不可以了……

    2020-06-22 17:56:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载