Size: a a a

2021 March 21

AS

Anatoly Shirokov in pro.cxx
Булат Гиниятов
Вот полный, заменил свой класс на qobject, чтоб не смущал (после проверил, поведение такое же).

int main(int argc, char *argv[])
{
   qputenv("QT_DEBUG_PLUGINS", QByteArray("1"));

   QCoreApplication a(argc, argv);

   QPluginLoader *plugin = new QPluginLoader;
   plugin->setFileName("plugins/plugin");
   QObject *pluginLoaderObject = plugin->instance();
   QObject *myObject = qobject_cast<QObject *>(pluginLoaderObject);

   plugin->unload();
   qDebug() << plugin->isLoaded(); //false

   QThread::sleep(20000);
}
А вы в документации были?
источник

IZ

Ilia Zviagin in pro.cxx
Булат Гиниятов
Ок, спасибо, попробую
Я в общем к тому что ты где-то напорол, и загрузил лишний раз. Это надо искать
источник

AS

Anatoly Shirokov in pro.cxx
Ilia Zviagin
Я в общем к тому что ты где-то напорол, и загрузил лишний раз. Это надо искать
В доке все написано, но ее не читают
источник

AS

Anatoly Shirokov in pro.cxx
По вопросам Qt есть @qt_chat, но прежде чем завать вопрос удостоверьтесь, что вы были в документации. Как правило, ее хватает. Если не хватает, у Qt есть исходники, там можно добрать знаний.
источник

П

Пашечка in pro.cxx
От себя добавлю, что читать исходники qt достаточно просто в основном и это реально годный источник информации
источник

DF

Dollar Føølish in pro.cxx
Ну да кутэ это ж почти джава код
источник

S

SupaproBot in pro.cxx
Переслано от live to fight
Добрый день, есть вопрос по поводу инлайнов в экстендед асм (не знаю, считается ли это оффтопом тута, если не сюда, то маякните куда обратиться), в общем:
В регистре задано число. Установить другой регистр в значение 1, если n-й бит исходного числа равен 1. Установить в 0, если n-й бит равен 0. Число задано в регистре DX, n-й bit = 6, результат поместить в регистр BX. Вот что я написал, но выдает постоянно 1. В чем может быть ошибка, не могу понять, как верно задаются синтаксически условные операторы здесь...

  int16_t number = 0b101100101, bit = 6, res;
 __asm__ __volatile__(
   "movw %1, %%dx;"
   "movw %2, %%ax;"
   "btw %%dx, %%ax;"
   "jc m1;"
   "m1: movw $0, %%bx;"
   "jnc  m2;"
   "m2: movw $1, %%bx;"
   "movw %%bx, %0;"
   : "=r" (res)
   : "r" (number), "r" (bit)
   : "cc"
 );
 printf("\n%d\n", res);
источник

DF

Dollar Føølish in pro.cxx
У вас m1: будет выполняться безусловно всегда
источник

DF

Dollar Føølish in pro.cxx
Как и m2: собственно
источник

DF

Dollar Føølish in pro.cxx
Эх, я думал что то интересно будет ((
источник

БГ

Булат Гиниятов... in pro.cxx
Anatoly Shirokov
А вы в документации были?
Разумеется читал
источник

БГ

Булат Гиниятов... in pro.cxx
Anatoly Shirokov
По вопросам Qt есть @qt_chat, но прежде чем завать вопрос удостоверьтесь, что вы были в документации. Как правило, ее хватает. Если не хватает, у Qt есть исходники, там можно добрать знаний.
Там тоже этот вопрос был, но общения не было
источник

l

live to fight in pro.cxx
Dollar Føølish
У вас m1: будет выполняться безусловно всегда
разве? Просто если я верно понял, после bt во флаг CF запишется 1/0 и одну из инструкций пропустит.
источник

DF

Dollar Føølish in pro.cxx
Вы посмотрите куда у вас джампы ведут
источник

DF

Dollar Føølish in pro.cxx
И все станет ясно
источник

AS

Anatoly Shirokov in pro.cxx
Булат Гиниятов
Разумеется читал
Once loaded, plugins remain in memory until all instances of QPluginLoader has been unloaded, or until the application terminates. You can attempt to unload a plugin using unload(), but if other instances of QPluginLoader are using the same library, the call will fail, and unloading will only happen when every instance has called unload(). Right before the unloading happens, the root component will also be deleted.
источник

БГ

Булат Гиниятов... in pro.cxx
Ilia Zviagin
Я в общем к тому что ты где-то напорол, и загрузил лишний раз. Это надо искать
Нашел вот это
https://stackoverflow.com/questions/36132995/unload-all-qt-dlls

Там сказано что qt сознательно сделали так, чтобы все dll которые подгружаются остаются до завершения твоей проги. Получается надо юзать freelibrary как обходной путь?
источник

AS

Anatoly Shirokov in pro.cxx
Anatoly Shirokov
Once loaded, plugins remain in memory until all instances of QPluginLoader has been unloaded, or until the application terminates. You can attempt to unload a plugin using unload(), but if other instances of QPluginLoader are using the same library, the call will fail, and unloading will only happen when every instance has called unload(). Right before the unloading happens, the root component will also be deleted.
Где вы удалили объект полученный через instance до unload?
источник

БГ

Булат Гиниятов... in pro.cxx
Anatoly Shirokov
Где вы удалили объект полученный через instance до unload?
Да, я пробовал удалять, не помогает, библиотека все еще остается подгруженной
источник

D

Danya in pro.cxx
SupaproBot
Переслано от live to fight
Добрый день, есть вопрос по поводу инлайнов в экстендед асм (не знаю, считается ли это оффтопом тута, если не сюда, то маякните куда обратиться), в общем:
В регистре задано число. Установить другой регистр в значение 1, если n-й бит исходного числа равен 1. Установить в 0, если n-й бит равен 0. Число задано в регистре DX, n-й bit = 6, результат поместить в регистр BX. Вот что я написал, но выдает постоянно 1. В чем может быть ошибка, не могу понять, как верно задаются синтаксически условные операторы здесь...

  int16_t number = 0b101100101, bit = 6, res;
 __asm__ __volatile__(
   "movw %1, %%dx;"
   "movw %2, %%ax;"
   "btw %%dx, %%ax;"
   "jc m1;"
   "m1: movw $0, %%bx;"
   "jnc  m2;"
   "m2: movw $1, %%bx;"
   "movw %%bx, %0;"
   : "=r" (res)
   : "r" (number), "r" (bit)
   : "cc"
 );
 printf("\n%d\n", res);
По ассемблеру есть отдельные чаты же
@it_chats
источник