小编Sam*_*ney的帖子

Python Ctypes 和线程

为了将其放在上下文中,我正在为 C DLL 创建一个包装器 - 相当复杂的用例,但请跟着我!

在包装类的初始化过程中,我为 C DLL 函数创建别名,以便我的类稍后可以轻松访问它们。我做的另一项任务是将类中函数的回调传递给我的 DLL,该回调保存在静态变量中并稍后使用。

最后,我生成另一个线程,它重复调用 DLL 中的一个函数,该函数执行一些工作,并且在其执行过程中的各个点上,需要使用在类的 init 阶段分配的回调回调到 Python 程序。

当以这种方式调用回调时,我收到以下信息:

WindowsError: exception: access violation reading 0x00000001
Run Code Online (Sandbox Code Playgroud)

我怀疑这与线程有关,因为当我在分配给它的同一个线程中测试回调时,DLL 可以成功调用它,并且我的所有参数都会传递给 Python。是否对我用于持久回调的 DLL 中的变量实施了某种保护?

python ctypes

5
推荐指数
1
解决办法
3450
查看次数

标签 统计

ctypes ×1

python ×1