#ifndef _SHAKE_H_
#define _SHAKE_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "shake_private.h"

struct shakeDev;

/* libShake functions */
int shakeInit();
void shakeQuit();
void shakeListDevices();
int shakeNumOfDevices();
shakeDev *shakeOpen(unsigned int id);
void shakeClose(shakeDev *dev);
int shakeQuery(shakeDev *dev);
void shakeSetGain(shakeDev *dev, int gain);
void shakeInitEffect(shakeEffect *effect, shakeEffectType type);
int shakeUploadEffect(shakeDev *dev, shakeEffect effect);
void shakeEraseEffect(shakeDev *dev, int id);
void shakePlay(shakeDev *dev, int id);
void shakeStop(shakeDev *dev, int id);

#ifdef __cplusplus
}
#endif

#endif /* _SHAKE_H_ */

#ifndef _SHAKE_H_
#define _SHAKE_H_

#include "shake_private.h"

struct shakeDev;

/* libShake functions */
int shakeInit();
void shakeQuit();
void shakeListDevices();
int shakeNumOfDevices();
shakeDev *shakeOpen(unsigned int id);
void shakeClose(shakeDev *dev);
int shakeQuery(shakeDev *dev);
void shakeSetGain(shakeDev *dev, int gain);
void shakeInitEffect(shakeEffect *effect, shakeEffectType type);
int shakeUploadEffect(shakeDev *dev, shakeEffect effect);
void shakeEraseEffect(shakeDev *dev, int id);
void shakePlay(shakeDev *dev, int id);
void shakeStop(shakeDev *dev, int id);

#endif /* _SHAKE_H_ */

--- 
+++ 
@@ -1,5 +1,9 @@
 #ifndef _SHAKE_H_
 #define _SHAKE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 #include "shake_private.h"
 
@@ -20,4 +24,8 @@
 void shakePlay(shakeDev *dev, int id);
 void shakeStop(shakeDev *dev, int id);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* _SHAKE_H_ */
Use C calling convention when header is included by C++ code
