我是ctype和C的新手,在通过ctype将struct指针变量传递给在python中调用的c函数时遇到了麻烦。如果它太基础和明显,请容忍我。下面是我的c代码的样子。
#include "mylib.h" (inside this mylib.h file MYSTRUCT is defined)
struct MYSTRUCT* modifystruct(a,b,c,d,e)
{
MYSTRUCT *mystpointer;
.....
.....
return mystpointer;
}
int mycfunction(mystpointer)
MYSTRUCT *mystpointer;
{
.........
.........
.........
}
与上面一样,修改结构函数update *mystpointer是一个指向MYSTRUCT的指针并返回它。mycfunction的作用是传递返回的mystpointer。在C中,这在main函数中工作得很好。但是,当我尝试使用ctype将".so“文件加载到python中时,它失败了,并且我认为我没有正确地定义mystpointer的argtype。下面是我写的简短的python代码。假设上面的c代码被编译为"mycmodule.so“。
mylib=cdll.LoadLibrary("mycmodule.so")
mycfunction=mylib.mycfunction
mycfunction.restype=c_int
mycfunction.argtypes=[c_void_p]
mystpointer=c_void_p()
在C代码中,我必须将mystpointer类型定义为"MYSTRUCT *mystpointer“;但是,我不知道如何在ctypes中这样做……相反,我将类型定义为c_void_p,但这会触发失败。提前感谢!
https://stackoverflow.com/questions/51256595
复制相似问题