C++调用python,PyImport_ImportModule|PyObject_GetAttrString出错,高人帮忙,没分了,555

universee 2007-08-27 04:47:17
#Filename test.py
you = "world!"
print "aaaaaaaa"
def Hello():
print "Hello, world!"
Hello()



#include "stdafx.h"
//#include <python.h>
int main()
{
Py_Initialize();

PyObject * pModule = NULL;
PyObject * pFunc = NULL;

pModule = PyImport_ImportModule("test");
//pModule = PyImport_ImportModule("test.py");
pFunc = PyObject_GetAttrString(pModule, "Hello");
//pFunc = PyObject_GetAttrString(pModule, "you");
PyEval_CallObject(pFunc, NULL);

Py_Finalize();

return 0;
}



test.py应该放在哪呢?
我把py文件在python25/lib, projectdir/debug和projectdir下各放一份,
调试看到,pModule 不为0了,pFunc 还是0。




为了解决没有python25_d.lib的问题,我在stdafx.h里有如下设定
stdafx.h:

#pragma once
#include <afx.h>
#include <afxcmn.h>

#ifdef _DEBUG
#undef _DEBUG
#include "E:\software\Python25\include\Python.h"
#define _DEBUG
#else
#include "E:\software\Python25\include\Python.h"
#endif
...全文
1555 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2011-06-27
  • 打赏
  • 举报
回复
服了你的挖坟能力了……
ccbocs 2011-06-27
  • 打赏
  • 举报
回复

PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('C:\Python23\Lib\site-packages\')");
设置一下py文件所在目录,另外不要用test这种常用的名字
iambic 2007-09-04
  • 打赏
  • 举报
回复
上次不是有人告诉过你了么。
金庆 2007-09-04
  • 打赏
  • 举报
回复
改名后放在程序运行目录下。PYTHON\lib目录下也行。
rocenarius 2007-08-28
  • 打赏
  • 举报
回复
把test.py改名,python自带test模组且优先级高于用户的
universee 2007-08-27
  • 打赏
  • 举报
回复
up

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧