免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2253 | 回复: 0
打印 上一主题 下一主题

问个c语言和python相互调用的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-19 21:43 |只看该作者 |倒序浏览
我有一个dx画多边形函数,单独执行是一点问题也没有,我把它做成python模块后,再调用就出问题了.但参数传递正确,编译也无问题.就是好像没有执行一样.

//这是画多边型函数
int draw_t(POLYGON2D_PTR poly,int c_x,int c_y,DWORD color,VERTEX2DF_PTR vlist)
{

poly->state = 1;
poly->num_verts = 3;
poly->x0 = c_x;
poly->y0 = c_y;
poly->xv = 0;
poly->yv = 0;
poly->color = color;
poly->vlist = vlist;


DDraw_Lock_Back_Surface();

if (Draw_Polygon2D16(poly, back_buffer, back_lpitch))
{//这里是测试Draw_Polygon2D16有没有执行,python调用后显示确实是做了的
Open_Error_File("errors2.log");
Write_Error("draw_t内 %d ,%d",poly->x0,poly->y0);
Close_Error_File();
}else return 0;

DDraw_Unlock_Back_Surface();
   
return 1;
}


static PyObject * py_draw_t (PyObject* self,PyObject *pParams)//这些参数是必须的
{//这个函数是被python调用的
  int cx;
  int cy;

  if ( ! PyArg_ParseTuple( pParams,"ii",&cx,&cy))
  {
  Open_Error_File("PyArg_ParseTuple.log");
Write_Error("PyArg_ParseTuple 出错");
Close_Error_File();
  };
  //调用画三角型函数,这里调用draw_t 不报错,但也不显示,cx,cy的值也正常
  draw_t(&xxx,cx,cy,RGB16Bit565(0, 255, 0),asteroid_vertices);

  Py_RETURN_NONE;  
   
  }


static PyMethodDef draw_API_FUN[] =
  { //第一个是python中用,第二个是c函数指针要转换为PyCFunction类型
  //第3个是模式类型,第4个是函数简介字符串,可为空
  {"py_draw_t", (PyCFunction)py_draw_t, METH_VARARGS, NULL},
  {NULL,NULL,0,NULL}
  };



PyMODINIT_FUNC init_draw_api() {
  Py_InitModule3("draw_api", draw_API_FUN, "My first extension module.");
}


//用这个来调用python脚本.
void get_pFunc(char *pyscriptName)
{
  PyObject * pName = PyString_FromString(pyscriptName);
  PyObject * pModule = PyImport_Import(pName);
  if ( ! pModule )
  {
  Open_Error_File("pModule.log");
Write_Error("pModule 出错");
Close_Error_File();
  }
   
}


问题到底是出在哪儿呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP