我有一个通过编译它的ac库。它将生成一个.so库,它将在其他c项目中使用,其中一个头文件(xh)用于访问你的.so文件中的库函数项目。在我的项目中非常简单包括x.header并给出-lx.so文件和库源目录(.so文件)的路径来eclipse C链接器并编译我的项目。
问题是:我如何将这个c库与我的c ++项目一起使用,就像上面在eclipse中解释的c项目一样?
我在eclipse中的c ++代码中做了同样的事情,并在我的c ++链接器库中添加.so文件也包含库源路径。之后我添加了标题并尝试使用库函数,但是eclipse给出了错误“未定义的函数引用...”并且无法编译代码。
谢谢。
答案 0 :(得分:2)
要在C ++中使用任何C编译代码,您需要在标题中用extern "C" { ... }
包装它[如果您计划在C ++编译器中编译它,也就是库内容本身]。
要确保可以使用BOTH C和C ++编译代码,可以使用:
#idfef __cplusplus
extern "C" {
#endif
int func(double d);
...
#idfef __cplusplus
} // end of extern "C"
#endif
这样,extern "C"
仅在使用C ++编译器时发生,并且您不会在C编译器中出错。