我现在在开发基于LTTng的Linux性能分析程序。
使用了LTTng下的函数库来代替命令行。
现在总结一下C++程序中包含C库的事情:
C++程序可以包含C库,比较哦简单。
使用g++之类的编译器的时候。编译器自带__cplusplus
这个宏。
在库的头文件里也一般都会有:
#ifdef __cplusplus
extern "C" {
#endif
这种宏,来进行C代码声明。
所以实际操作起来就基本上是无感的。这也是为什么以前我没有发现这个问题。
在自己进行C、C++联合开发的时候。
要包含C头文件就需要使用
extern "C" {
#include "XXX.h"
}
包裹起来。
除了头文件,代码也一样。
反过来在C里包含C++库就比较麻烦。需要对接口进行C语言封装。自己写个封装函数调用C++库,编译成.o 或者.a这样的中间对象。
然后再给C程序去链接。感觉比较麻烦。。