我正在用这样的ctypes加载一个dll:
lib = cdll.LoadLibrary("someDll.dll");
当我完成库时,我需要卸载它以释放它使用的资源。我在文档中找到有关如何执行此操作的任何内容时遇到问题。我看到这个相当古老的帖子:How can I unload a DLL using ctypes in Python?。我希望有一些显而易见的东西,我没有找到,也不是一个黑客。
答案 0 :(得分:21)
我发现这样做的唯一真正有效的方法是负责调用LoadLibrary
和FreeLibrary
。像这样:
import ctypes
# get the module handle and create a ctypes library object
libHandle = ctypes.windll.kernel32.LoadLibraryA('mydll.dll')
lib = ctypes.WinDLL(None, handle=libHandle)
# do stuff with lib in the usual way
lib.Foo(42, 666)
# clean up by removing reference to the ctypes library object
del lib
# unload the DLL
ctypes.windll.kernel32.FreeLibrary(libHandle)