我正在使用ctypes在Python中加载DLL.这非常有效.
现在我们希望能够在运行时重新加载该DLL.
直截了当的方法似乎是:1.卸载DLL 2.加载DLL
不幸的是我不确定卸载DLL的正确方法是什么.
_ctypes.FreeLibrary可用,但是私有.
有没有其他方法来卸载DLL?
我有以下代码
import ctypes
lib1 = ctypes.cdll.LoadLibrary("./mylib.so")
# modify mylib.so (code generation and compilation) or even delete it
lib2 = ctypes.cdll.LoadLibrary("./mylib.so")
Run Code Online (Sandbox Code Playgroud)
问题是lib2指的是原始共享库,而不是新共享库。如果我在调用之间删除 mylib.so ,则不会出现错误。
使用ctypes._reset_cache()没有帮助。
我如何判断ctypes是否真正从硬盘重新加载库?