在python中,如何设置LP_c_ubyte的值
我正在使用Python ctypes为C DLL创建一个Python包装器。我在用python更新内存中的值指针时遇到问题 在本例中,我有一个具有寄存器回调函数的DLL。调用回调函数,创建无符号char变量,将指向该变量的指针传递给回调函数,然后打印该变量的更新值 我所期望的是python函数在python中,如何设置LP_c_ubyte的值,python,c++,callback,ctypes,loadlibrary,Python,C++,Callback,Ctypes,Loadlibrary,我正在使用Python ctypes为C DLL创建一个Python包装器。我在用python更新内存中的值指针时遇到问题 在本例中,我有一个具有寄存器回调函数的DLL。调用回调函数,创建无符号char变量,将指向该变量的指针传递给回调函数,然后打印该变量的更新值 我所期望的是python函数callbackUpdateValue将更新foo的值,更新后的值将打印在C DLLDoCallBack函数中。打印0的值,而不是预期的99 我的问题是:在python中如何更新callbackUpdate
callbackUpdateValue
将更新foo
的值,更新后的值将打印在C DLLDoCallBack
函数中。打印0
的值,而不是预期的99
我的问题是:在python中如何更新callbackUpdateValue
中foo
的值,以便可以在C DLLDoCallBack
函数中打印它
我已经尽可能地最小化了我的代码
<强> dll C++代码<强> < /p> DLL有两个函数。一个用于注册回调,另一个用于调用回调并打印结果
#include <stdio.h>
typedef void(*FPCallback)(unsigned char * foo);
FPCallback g_Callback;
extern "C" __declspec( dllexport ) void RegisterCallback(void(*p_Callback)(unsigned char * foo)) {
g_Callback = p_Callback ;
}
extern "C" __declspec( dllexport ) void DoCallBack() {
unsigned char foo = 0 ;
g_Callback( &foo );
printf( "foo=%d\n", foo);
}
定义python回调的正确方法是
def callbackUpdateValue( foo ):
foo[0] = 99
其中
foo[0]
取消对指针的引用。更多信息可以在这里找到:定义python回调的正确方法是
def callbackUpdateValue( foo ):
foo[0] = 99
其中
foo[0]
取消对指针的引用。更多信息可在此处找到:不确定,但您不必取消对指针的引用,即。E使用foo[0]=99
?后续问题不确定,但您不必取消引用指针,即。E使用foo[0]=99
?跟进问题