首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ctypes卸载dll

ctypes卸载dll
EN

Stack Overflow用户
提问于 2012-10-30 04:18:09
回答 1查看 8.8K关注 0票数 17

我正在加载一个带有如下ctype的dll:

代码语言:javascript
复制
lib = cdll.LoadLibrary("someDll.dll");

当我用完这个库时,我需要卸载它以释放它使用的资源。我在文档中找到任何关于如何做到这一点的东西都有问题。我看到一个相当古老的帖子:How can I unload a DLL using ctypes in Python?。我希望有一些明显的东西,我没有发现,而不是黑客。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-30 04:31:21

我找到的唯一真正有效的方法是负责调用LoadLibraryFreeLibrary。如下所示:

代码语言:javascript
复制
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)

更新:

从Python3.8开始,ctypes.WinDLL()不再接受None来表示没有传递文件名。相反,您可以通过传递空字符串来解决此问题。

请参阅https://bugs.python.org/issue39243

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13128995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档