-
-
[原创]C/C++语言编写python扩展模块解析python脚本多参数
-
发表于:
2021-8-6 18:02
12647
-
[原创]C/C++语言编写python扩展模块解析python脚本多参数
使用C/C++语言编写python扩展模块详细内容大致如下:
1.新建一个dll文件,导出一个C语言接口函数:PyInit_XXX,XXX为动态库模块名称
2.在上述导出函数中使用PyModule_Create函数创建结构体(实际中稍微复杂一点)
3.形式如:{ "alalysisTuple", PyAlalysisTuple, METH_VARARGS, "" }, //可变参数,当在python脚本中调用函数alalysisTuple,即可映射到自己写的C语言函数PyAlalysisTuple
4.windows下将dll后缀改为pyd,放到py脚本可以识别的路径
5.在python脚本中使用语句 from dllname import alalysisTuple,之后即可在脚本中调用alalysisTuple函数
动态库中PyAlalysisTuple函数如下:
调用MyPyArg_ParseTuple函数,即可解析不定个数的参数。
背景:使用C
/
C
+
+
语言编写python扩展模块,python脚本中传入元组参数,元组中包含不定个数的字符串。
背景:使用C
/
C
+
+
语言编写python扩展模块,python脚本中传入元组参数,元组中包含不定个数的字符串。
如果size更大,那就需要写更多的
else
if
函数,此时可以使用一个临时的办法,例如限制size的大小,如设置size最大为
16
,那么声明
16
个变量,或者一个char
*
str
[
16
]数组,然后调用PyArg_ParseTuple函数,传入的
format
中有
16
个s,后面再传入
16
个字符串指针的地址,可以作为临时方法,如果size大于
16
,那么就提示参数过多,不合法。
还有一个方案,可以使用一个裸汇编函数去封装PyArg_ParseTuple,在汇编函数中展开栈参数调用PyArg_ParseTuple,PyAlalysisTuple如下:
如果size更大,那就需要写更多的
else
if
函数,此时可以使用一个临时的办法,例如限制size的大小,如设置size最大为
16
,那么声明
16
个变量,或者一个char
*
str
[
16
]数组,然后调用PyArg_ParseTuple函数,传入的
format
中有
16
个s,后面再传入
16
个字符串指针的地址,可以作为临时方法,如果size大于
16
,那么就提示参数过多,不合法。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!