【问题标题】:error: unknown type name while compiling dbus错误:编译 dbus 时未知类型名称
【发布时间】:2011-09-22 11:45:52
【问题描述】:

我有一个包含一些 dbus 内容并实现 dbus.h 的 c 文件。到目前为止,这工作正常。现在我打算将我的 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参数错了吗?

【问题讨论】:

    标签: c gcc dbus


    【解决方案1】:

    这只是一个猜测,但也许 也包含

    #ifndef DBUS_H
    #define DBUS_H
    

    您需要使它们不一样,例如将您的本地更改为

    #ifndef LOCAL_DBUS_H
    #define LOCAL_DBUS_H
    

    【讨论】:

      猜你喜欢
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 2015-10-20
      • 2017-04-04
      • 2018-05-14
      • 2013-08-19
      • 1970-01-01
      相关资源
      最近更新 更多