Ich habe die XML-Dateien aus den Dokumenten generiert (
Code: Select all
waylandCode: Select all
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);
}
Wenn es von Nutzen ist, finden Sie unten die Compiler-/Linker-Flags, die ich verwende (sowohl X11 als auch Wayland werden standardmäßig unterstützt)
Code: Select all
clang++ -std=c++17 -Wall -Werror -MD -gdwarf-5 -fPIC -fvisibility=hidden -fdeclspec -Wno-unused-const-variable --shared -lwayland-client -lX11
- Installieren Sie wayland-protocols von Ihrem Paketmanager und generieren Sie die XML-Header und Quelldateien in einem Verzeichnis (z. B. Protocols/.h und Protocols/.c). Generieren Sie für eine minimale Verwendung Dateien aus xdg-shell.xml und xdg-decoration.xml.
- Verwenden Sie den folgenden Code in main.c, um das einfachste Szenario zum Einbinden der Schnittstelle zu erstellen.
Code: Select all
// 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
}
- Kompilieren Sie das Obige mit dem Befehl clang++ -x c++ main.c Protocols/xdg_decoration.c Protocols/xdg_shell.c -o test -lwayland-client
- Beobachten Sie den Fehler.
Mobile version