Что делать, если вызов FreeLibrary API не удается?

Вопрос

У меня есть сторонняя DLL, которая выдает необработанное исключение при попытке выгрузить ее из моего собственного приложения C. Это приводит к сбою вызова FreeLibrary , и модуль остается загруженным в моем процессе.

Есть ли какие-либо варианты принудительной выгрузки библиотеки?

Что вы делаете при вызове FreeLibrary?

Дополнительные сведения

При использовании динамического связывания во время загрузки это достаточно раздражает, но в конечном итоге приложение получает снесли ОС. Проблема возникает при использовании динамической компоновки во время выполнения. Я загружаю эту DLL, использую ее, а затем в некоторых случаях мне нужно выгрузить ее из виртуального адресного пространства моего процесса, а затем продолжить работу. Когда я вызываю FreeLibrary из сторонней библиотеки, она выполняет некоторую работу по очистке (например, в DllMain при вызове DLL_PROCESS_DETACH ). Во время очистки он вызывает исключение, которое не обрабатывается, и всплывает как необработанное исключение для FreeLibrary. Это приводит к сбою вызова и модуль остается загруженным.

I ' Мы отправили запрос поставщику, поэтому, надеюсь, я смогу получить исправление, которое позволит этой конкретной библиотеке успешно выгружаться. Однако в случае, если я этого не сделаю, и для общего случая этой проблемы мне любопытно, какие есть варианты.

10
задан Zach Burlingame 27 May 2011 в 14:07
поделиться