[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gpsd-dev] [PATCH RESEND] libgps.h: Fix linkage problem
From: |
Michal Privoznik |
Subject: |
[gpsd-dev] [PATCH RESEND] libgps.h: Fix linkage problem |
Date: |
Wed, 19 Nov 2014 09:18:54 +0100 |
When building with libQgpsmm=1 enabled I see this failure:
g++ -o libgps_core-qt.os -c -D_GNU_SOURCE -Wextra -Wall -Wno-uninitialized
-Wno-missing-field-initializers -Wcast-align -Wmissing-declarations
-Wmissing-prototypes -Wpointer-arith -Wreturn-type -pthread
-Wmissing-declarations -O2 -pthread -fPIC -DUSE_QT -DQT_SHARED
-I/usr/include/qt4 -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtCore
libgps_core.c
cc1plus: warning: command line option '-Wmissing-prototypes' is valid for
C/ObjC but not for C++
In file included from libgps_core.c:19:0:
gps_json.h:41:28: error: conflicting declaration of 'int json_ais_read(const
char*, char*, size_t, ais_t*, const char**)' with 'C' linkage
/address@hidden@*/const char **);
^
In file included from libgps_core.c:18:0:
libgps.h:34:12: note: previous declaration with 'C++' linkage
extern int json_ais_read(const char *, char *, size_t, struct ais_t *,
^
scons: *** [libgps_core-qt.os] Error 1
scons: building terminated because of errors.
Digging more into the problem shows, libgps.h doesn't have the
functions enclosed within 'extern "C"' mark. Therefore, g++ mangled
the function names and hence the error.
Signed-off-by: Michal Privoznik <address@hidden>
---
libgps.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/libgps.h b/libgps.h
index f773188..914c4df 100644
--- a/libgps.h
+++ b/libgps.h
@@ -10,6 +10,9 @@
#define SHM_PSEUDO_FD -1
#define DBUS_PSEUDO_FD -2
+#ifdef __cplusplus
+extern "C" {
+#endif
extern int gps_sock_open(/address@hidden@*/const char *,
/address@hidden@*/const char *,
/address@hidden@*/struct gps_data_t *);
extern int gps_sock_close(struct gps_data_t *);
@@ -33,6 +36,9 @@ extern int gps_dbus_mainloop(struct gps_data_t *, int,
extern int json_ais_read(const char *, char *, size_t, struct ais_t *,
/address@hidden@*/const char **);
+#ifdef __cplusplus
+}
+#endif
#define PRIVATE(gpsdata) ((struct privdata_t *)(gpsdata)->privdata)
--
2.0.4
- [gpsd-dev] [PATCH RESEND] libgps.h: Fix linkage problem,
Michal Privoznik <=