The only thing that may be needed is adding extern "C" { ... } to your headers, if C++ detected But it is needed anyways, because I don't think you want to limit the library usage from C++ #ifdef __cplusplus #define HEADER_BEGIN extern "C" { #else #define HEADER_BEGIN #ifdef __cplusplus #define HEADER_END } #else #define HEADER_END And use these in every header Also, I might have missed the __cplusplus macro name - please google what macro is used when using C++