Python:ctypes从另一个线程调用回调方法

时间:2014-02-19 01:01:44

标签: python c++ multithreading ctypes

我有一个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而是一些垃圾。如果从主线程调用,则回调可以正常工作。任何线索?

0 个答案:

没有答案