我们如何在C++代码中使用任何C库?

Rel*_*lla 5 c c++

我们如何在C++代码中使用任何C库?(我们可以吗?有什么关键吗?)(我使用的是VS10,现在谈论的是libs,如x264和OpenCV)

Aar*_*lla 10

是的,您唯一需要做的就是将#include语句包装起来extern "C"告诉C++编译器使用C语义来实现函数名称,如下所示:

extern "C" {
#include <library.h>
}
Run Code Online (Sandbox Code Playgroud)

在链接期间,只需像任何普通的C++库一样添加库.


neu*_*uro 2

您可以使用 C++ 代码中的任何 C 库。这是 C++ 的一大优点:-) 您只需将库头文件包含在 C++ 代码中并链接到您使用的库即可。

任何好的库都会处理 C++ 中的头文件包含。如果不是这种情况,您必须自己进行以下操作:

#ifdef __cplusplus
extern "C" {
#endif

#include "c_header.h"

#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)

编辑:正如 Mike 所说,只有当您不知道您的文件是否将与 C 或 C++ 一起使用时才需要 ifdef 部分。例如,如果文件是 API 标头的标头,您可以保留它们。

顺便说一下,opencv 处理 C 或 C++ 的包含(因此 opencv 标头中已经有了 #ifdef 部分)。我不知道x264...

我的2分