我想用 C 实现一个项目,但是用 C++ 编写项目的某些部分然后从主 C 调用它们很舒服em>代码。
可能吗?!如果是,我该怎么做?!
提前致谢:)
附言
我在我的 C++ 代码中使用了一些库,例如 OpenCV。
最佳答案
您需要使用常规 C 函数“包装”您的 C++ 接口(interface),这些函数采用参数来指示将调用它们的对象。例如,如果你有 C++
class A
{
// .. boilerplate stuff...
int SomeMethod(int n, float f);
};
然后连同它,你可以声明一个函数,例如
extern "C" int A_SomeMethod(void* Obj, int n, float f)
{
return(((A*)Obj)->SomeMethod(n, f));
}
如果您对 void* 的转换不满意,您可以实现某种从不透明句柄到 A*
的映射。但要点是您需要保留一些指向将调用该方法的对象的句柄/指针。为了获得指针/句柄,您需要将分配包装到:
extern "C" void* A_Instantiate()
{
return new A;
}
C++ 文件应与具有上述功能的文件一起单独编译。 C 编译的单独包含应包含上述所有函数的声明。
编辑:下面的注意事项和评论很重要;回答这个问题,“是的,可以从 C 调用 C++”,这是一种方法。这不是一个完整的方法,因为没有真正的机械方法来做到这一点,但它是一个开始。此外,不要忘记为 delete
等创建另一个调用。
关于c++ - 如何在我的 C 代码中访问我的 C++ 函数,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15452892/