0

我有一个通过编译它的 ac 库。它将生成一个 .so 库,该库将在其他 c 项目中使用,其中一个头文件(xh)用于访问项目中 .so 文件中的库函数。在我的项目中非常简单包括 x.header 并将 -lx.so 文件和库源目录(.so 文件)的路径提供给 eclipse C 链接器并编译我的项目。

问题是:我如何在我的 c++ 项目中使用这个 c 库,就像上面在 eclipse 中解释的 c 项目一样?

我在 eclipse 中的 c++ 代码中做了同样的事情,并在我的 c++ 链接器库中添加了 .so 文件,还包括了它的库源路径。此后我添加标题并尝试使用库函数,但 Eclipse 给出错误“未定义对函数的引用......”并且无法编译代码。

谢谢你。

4

1 回答 1

2

要在 C++ 中使用任何 C 编译代码,您需要将其包装extern "C" { ... }在标头中 [如果您打算在 C++ 编译器中编译它,还需要在库内容本身中进行编译]。

为确保代码可以同时使用 C 和 C++ 编译,您可以使用:

#idfef __cplusplus
extern "C" {
#endif

int func(double d); 

... 

#idfef __cplusplus
}  // end of extern "C"
#endif

这样,extern "C"只有在使用 C++ 编译器时才会发生,而且 C 编译器不会出错。

于 2013-06-08T22:03:51.660 回答