Fehler beim Erstellen der Anwendung für Wayland mit Fehler „undefinierter Verweis auf „zxdg_decoration_manager_v1_interfC++

Programme in C++. Entwicklerforum
Anonymous
 Fehler beim Erstellen der Anwendung für Wayland mit Fehler „undefinierter Verweis auf „zxdg_decoration_manager_v1_interf

Post by Anonymous »

Ich arbeite derzeit an der Implementierung eines Wayland-Backends für meine Spiel-Engine und bin jetzt nicht weitergekommen, da ich Dekorationen zum Fenster hinzufügen möchte.
Ich habe die XML-Dateien aus den Dokumenten generiert (

Code: Select all

wayland
, xdg-shell und xdg-decoration) und fügte sie der Projektstruktur hinzu. Diese Codezeile(n) scheinen das Problem auszulösen:

Code: 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);
}
Wie im Titel erwähnt, löst diese spezielle Codezeile den Fehler „undefinierter Verweis auf „zxdg_decoration_manager_v1_interface““ aus. Ich habe wirklich keine Ahnung, warum dies ausgelöst wird, da die anderen Schnittstellen ordnungsgemäß gebunden werden, wenn sie eingebunden werden (wl_compositor funktioniert einwandfrei), sodass es mir völlig schleierhaft ist.
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
Ein MRP kann wie folgt durchgeführt werden:
  • 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.
Vielen Dank im Voraus!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post