#c #qt #dllimport
#c #qt #dllimport
Вопрос:
Я использую QLibrary для разрешения символов в моей программе QT. Мне нужно обновить библиотеку во время работы приложения. Поэтому я пытаюсь удалить текущий файл библиотеки, но файл заблокирован моим приложением.
QLibrary lib("mylib.dll");
if (lib->load())
myfun = (MyFun) lib.resolve("myfun");
lib.unload();
myfun();
QFile::remove("mylib.dll"); // error on windows, success on linux mylib.so
Он отлично работает в Linux, но не работает в Windows.
Я также пытался удалить mylib.dll вручную при запуске приложения и получении сообщения об ошибке «файл открыт в myapp.exe «.
Я использую QT 5.7 с компилятором msvc2015.
Комментарии:
1. именно так файловые системы различаются в Windows и Linux.
2.
QLibrary::unload()
возвращает true при успешном завершении, какое возвращаемое значение для вас?3. Почему вы ожидаете, что сможете выгрузить библиотеку, а затем впоследствии вызвать ее? Интересно, ссылаетесь ли вы на библиотеку с привязкой времени загрузки.