ошибка: неизвестное имя типа при компиляции dbus - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть c-файл, содержащий некоторые вещи dbus и реализующий dbus.h.это работает нормально до сих пор.Теперь я намереваюсь разделить мой c-файл на c-файл и файл заголовка.но теперь - процесс компиляции завершился неудачно:

gcc -o dbus `pkg-config --cflags --libs dbus-1` dbus.c
In file included from dbus.c:1:0:
dbus.h:12:27: error: unknown type name ‘DBusMessage’
dbus.h:12:45: error: unknown type name ‘DBusConnection’
dbus.c: In function ‘dbus_send_signal’:
dbus.c:8:4: error: unknown type name ‘DBusMessage’
dbus.c:9:4: error: unknown type name ‘DBusMessageIter’
...

Я просто разделил прежний c-файл следующим образом:

#include "dbus.h" // include local dbus.h

/**
 * Connect to the DBUS bus and send a broadcast signal
 */
void dbus_send_signal(char* sigvalue)
{
   DBusMessage* msg;
   DBusMessageIter args;
   DBusConnection* conn;
   ...

и файл dbus.h с локальным заголовком:

#ifndef DBUS_H
#define DBUS_H

#include <dbus/dbus.h> // include the global dbus.h
#include <stdbool.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

void dbus_listen();
void dbus_send_signal(char *sigvalue);
...

Я не изменил сам код, поэтому я немного запутался.просто разделив содержимое в c- и h-файле.у тебя есть идея?параметры gcc неверны?

1 Ответ

5 голосов
/ 22 сентября 2011

Это всего лишь предположение, но, возможно,также содержит

#ifndef DBUS_H
#define DBUS_H

Вы должны сделать их не такими, например, изменить местный на

#ifndef LOCAL_DBUS_H
#define LOCAL_DBUS_H
...