Правила перегрузки в системе ресурсов Qt

#qt

#qt

Вопрос:

В моем приложении основной исполняемый файл и несколько (динамически загружаемых) совместно используемых библиотек содержат ресурсы Qt. Кажется, что загружаются все из них, и доступно объединение всех ресурсов. Что произойдет, если у нескольких ресурсов есть файл с одинаковым именем? Имеет ли приоритет первое или последнее, или это случайное / неопределенное значение? Есть ли какой-либо способ получить доступ к ресурсам из определенных файлов? Может ли плагин переопределять ресурсы в основном приложении?

Я знаю, что этого можно избежать, разумно используя пути, я просто спрашиваю, каковы правила, поскольку это, похоже, не задокументировано.

Комментарии:

1. Почему? Они работают нормально, мне просто интересно, что произойдет, если я случайно создам разные файлы с одинаковыми именами в двух плагинах.

2. Неважно, я неправильно понял ваше намерение.

Ответ №1:

Система ресурсов регистрирует по одному ресурсу на имя, и какой именно ресурс будет иметь данное имя, зависит только от порядка загрузки библиотеки: это не то, что вы всегда можете контролировать. Даже не имеет значения, «выигрывает» ли первый или последний ресурс с заданным именем. Вы не можете зависеть ни от чего из этого, оно может даже вести себя по-разному на разных платформах, поэтому у вас нет другого выхода, кроме как исправить свой код.

Ответ №2:

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