Я пытаюсь повторно использовать код BlueZ в моей собственной программе на C для управления Bluetooth-соединением и возникновения проблем с компиляцией.
Когда я проанализировал проблему, я понял, что происходит:
Все зависит от структуры моей программы:
1.myadv.c includes myadv.h includes gio.h
2. myadv.c includes "gdbus.h" (Helper lib)
Теперь проблема в том, что gdbus.h имеет определенные определения символов (typedef, методы и т. Д.), Которые конфликтуют с внутренними определениями в gio.h
Из-за этого я получаю такие ошибки компилятора:
/usr/include/glib-2.0/gio/gioenums.h:1383:3: error: conflicting types for ‘GDBusSignalFlags’
} GDBusSignalFlags;
^~~~~~~~~~~~~~~~
conflicting types for ‘g_dbus_proxy_new’
void g_dbus_proxy_new
Какова наилучшая практика, чтобы избежать таких ошибок конфликта символов во время включения? Обратите внимание, мне нужно использовать оба заголовочных файла:
- gio.h (The gnome lib)
- gdbus.h (помощник dbus напрямую позаимствован у BlueZ)