我有一个C库,它接受一个回调并在它自己的另一个线程中调用它。
from ctypes import *
class MyCLibrary:
def __init__(self):
self.lib_ = cdll.LoadLibrary("mycdll")
def Setcallback(self, callback):
CallbackT = CFUNCTYPE(None, c_wchar_p)
self.hModule_.IMcCSPSDK_SetLogger(CallbackT(callback))
lib = MyCLibrary()
def mycallback(param1):
print param1
lib.SetCallback(mycallback)
lib.Init()
raw_input()
当主线程在raw_input()上等待时,来自mycdll.dll的某个线程调用回调,该回调因访问冲突而崩溃。在调用网站的mycdll.dll中发生违规,它会尝试调用回调,python提供的函数不是null而是一些垃圾。如果从主线程调用,则回调可以正常工作。任何线索?