Ctypes unload dll

Я загружаю dll с такими типами:

lib = cdll.LoadLibrary("someDll.dll");

Когда я закончил с библиотекой, мне нужно выгрузить ее на свободные ресурсы, которые она использует. У меня возникают проблемы с поиском чего-либо в документах относительно того, как это сделать. Я вижу это довольно старое сообщение: Как я могу выгрузить DLL с помощью ctypes в Python?. Я надеюсь, что есть что-то очевидное, чего я не нашел и меньше взломал.

Ответы

Ответ 1

Единственный действительно эффективный способ, который я когда-либо делал, - это взять вызов 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)