繁体   English   中英

带c接口的c ++库

[英]c++ library with c interface

我需要用c ++编写一个库,客户端可以在远程服务器上执行某些操作。 特定的唯一一件事我还没有完成:c ++库需要一个C接口。 让我解释一下:从使用这个lib的客户端我需要调用类似于:int operation(void * addr); 如果int <0错误等等..但是库是c ++中的一个类。 所以我的答案是..需要一个全局变量来保存库中的类实例吗? 开发C ++类的C接口是一些更好的选择吗?

感谢您的建议。

您可以在C包装器中使用PIMPL惯用法 您提供了一个方法YourClass_Create ,它在内部调用构造函数(使用new )并返回指向类实例的指针; 对于客户端代码,这将只是一个不透明的句柄(它可能是void *typedef ),要传递给C接口的每个函数,以指定它必须工作的实例(就像stdio FILE * )。

所有这些函数必须做的是调用句柄上的相应方法(转换回指向类的指针)并将异常转换为错误代码。


pointed out in his comment, don't forget the necessary #ifdef ed extern "C" {} around your C wrapper code, otherwise you may get linker errors. 正如在他的评论中指出的那样,不要忘记C包装器代码周围必要的#ifdef ed extern "C" {} ,否则你可能会遇到链接器错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM