- 论坛徽章:
- 0
|
我有一个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();
}
}
问题到底是出在哪儿呢? |
|