嗨,我对python中的CTYPES有问题。我已经准备好dll库和一些回调。在swift上,一切都正常,但我在python中遇到了一些问题
Python:
def set_up_callback(self):
self.lib.set_callback(self.callback1)
@CFUNCTYPE(None, c_float, c_float, c_float, c_uint64)
def callback1( a, b, c, time):
print(a, b, c, time)
C++ 收回声明
typedef void(*callbackType)(float, float, float, uint64_t, void*);
callbackType callback;
void* context;
C++ > init /p>
void setCallback(callbackType callback, void* context) {
this->context = context;
this->callback = callback;
}
C++诱导
callback(1.5f, 2.4f, 1.3f, timestamp, context);
共享
extern "C" void SHARED_EXPORT set_callback(callbackType callback, void* context);
这很好,但我希望在回调函数中有self
,所以我尝试了这个
def set_up_callback(self):
callback_type = CFUNCTYPE(None, c_float, c_float, c_float, c_uint64)
callback = callback_type(self.callback1)
self.lib.set_callback(callback)
def callback1(self, a, b, c, time):
print(a, b, c, time)
通过这次尝试,我出现了错误Segmentation fault: 11
提前谢谢你的帮助
在
set_up_callback
中,callback
是一个局部变量,在调用self.lib.set_callback(callback)
后超出范围。必须在可以调用的生存期内保留对callback
的引用,因此将其存储为类实例的成员变量工作演示:
demo.cpp
demo.py
输出:
相关问题 更多 >
编程相关推荐