2011-09-22 155 views
0

我有一个c文件包含一些dbus的东西,并执行dbus.h.目前为止工作正常。现在我打算将我的c文件分割成c文件和头文件。但现在 - 编译过程failes有:错误:编译dbus时未知的类型名称

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参数是否错误?

回答

5

这只是一种猜测,但也许< DBUS/dbus.h>还包含

#ifndef DBUS_H 
#define DBUS_H 

你需要让他们不一样的,例如改变您的本地到

#ifndef LOCAL_DBUS_H 
#define LOCAL_DBUS_H 
+0

+1 yikes!不错的猜测 – pmg

+0

谢谢,很棒的猜测.. – mkind