ctypes выгрузить dll

Я загружаю DLL с ctypes, как это:

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

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

 Junuxx29 окт. 2012 г., 21:22
Ты пытался ?del lib
 Doo Dah29 окт. 2012 г., 21:28
У меня есть, но из поста, на который я ссылался: «я неНе знаю, но я сомневаюсь, что это выгружает DLL. я'я предполагаю, что это только удаляет привязку к имени в текущем пространстве имен (согласно языковой ссылке) "  Я подозреваю, что это правда. Я уверен, что ресурс, который мне нужен, все еще открыт.

Ответы на вопрос(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)
 Doo Dah29 окт. 2012 г., 21:50
Мои вызовы ctypes начинают сбой, когда я иду по этому маршруту с этой ошибкой: "ValueError: Процедура, вероятно, вызвана со слишком большим количеством аргументов (более 16 байт) " когда я пытаюсь сделать вызов функции
 David Heffernan29 окт. 2012 г., 21:52
Какое соглашение о вызовах ваша функция должна использовать?WinDLL средстваstdcall, Ваша библиотекаcdecl? Если это так, используйтеctypes.CDLL вместо.
 Doo Dah29 окт. 2012 г., 22:03
Спасибо за это объяснение.

Ваш ответ на вопрос