Не удалось собрать приложение для Wayland с ошибкой «неопределенная ссылка на zxdg_decoration_manager_v1_interface».C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Не удалось собрать приложение для Wayland с ошибкой «неопределенная ссылка на zxdg_decoration_manager_v1_interface».

Сообщение Anonymous »

Сейчас я работаю над реализацией бэкэнда Wayland для своего игрового движка, но теперь у меня застряло желание добавить украшения в окно.
Я сгенерировал XML-файлы из документации (, xdg-shell и xdg-decoration) и добавил их в структуру проекта. Эти строки кода, похоже, вызывают проблему:

Код: Выделить всё

if (strcmp(p_interface, zxdg_decoration_manager_v1_interface.name) == 0) {
data->decor_manager = (struct zxdg_decoration_manager_v1 *)wl_registry_bind(p_registry, p_name, &zxdg_decoration_manager_v1_interface, 1);
}
Как упоминалось в заголовке, эта конкретная строка кода вызывает ошибку неопределенной ссылки на `zxdg_decoration_manager_v1_interface'. Я действительно понятия не имею, почему это срабатывает, поскольку другие интерфейсы привязываются правильно при включении (wl_compositor работает нормально), поэтому я совершенно не понимаю этого.
Если это имеет какую-либо пользу, флаги компилятора/компоновщика, которые я использую, приведены ниже (и X11, и Wayland поддерживаются по умолчанию)

Код: Выделить всё

clang++ -std=c++17 -Wall -Werror -MD -gdwarf-5 -fPIC -fvisibility=hidden -fdeclspec -Wno-unused-const-variable --shared -lwayland-client -lX11
MRP можно выполнить следующим образом:
  • Установите wayland-protocols из любого имеющегося у вас менеджера пакетов и сгенерируйте заголовки XML и исходные файлы в каталог (например, протоколы/.h и протоколы/.c). Для минимального использования сгенерируйте файлы из xdg-shell.xml и xdg-decoration.xml.
  • Используйте приведенный ниже код в файле main.c, чтобы создать самый простой сценарий включения интерфейса.

Код: Выделить всё

// main.c
#include "protocols/xdg_decoration.h"
#include 

const char *tmp = "Hello, World!";

int main(void) {
if (strcmp(tmp, zxdg_decoration_manager_v1_interface.name) == 0) {
return 0;
}
return 1; // actual return value doesn't matter
}
  • Скомпилируйте приведенное выше с помощью команды clang++ -x c++ main.c протоколы/xdg_decoration.c протоколы/xdg_shell.c -o test -lwayland-client
  • Обнаружьте ошибку.
Заранее большое спасибо!


Подробнее здесь: https://stackoverflow.com/questions/798 ... nce-to-zxd
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»