【发布时间】:2020-11-12 14:15:59
【问题描述】:
我需要用-lfoo cpp lib编译c代码。
foo.cpp 看起来像:
#include "foo.hpp"
extern "C" {
/* some come for my class, that describes in foo.hpp*/
}
foo.hpp:
class Bar{
public:
/* public fields */
/* public methods */
}
那我可以这样做吗?
【问题讨论】:
-
如果这是您所要求的,您不能使用 C 代码中的 C++ 类。常见的解决方法是提供一组为您调用方法的 C++ 函数。
-
您的 C 代码需要使用带有 C 接口的有效 C 标头(并且您需要定义这样的接口)。
extern "C"仅影响命名,它不会自动使您的 C++ 代码可在 C 中使用。 -
@Botje 我猜是一组 C 函数。
-
C++ 可以使用 C 例程。 C 例程不能使用 C++ 对象(不能直接使用;可以制作与 C 兼容的接口,但这不是自动的,您必须自己制作)。
-
@evg C++ 函数带有
extern "C"标签,使它们可以从 C 中调用而不会被修改。