我需要在C++中编写一个库,可供客户端使用以在远程服务器上执行某些操作。特别的是,我还没有完成的一件事是:这个C++库需要一个C接口。让我更好地解释一下:
从客户端使用这个库时,我需要调用类似以下的内容:
int operation(void* addr);
如果 int<0 则为错误,以此类推。
但是该库是一个C++中的类。那么我的回答是,我需要一个全局变量来保存库中类的实例吗?还有其他更好的选项来开发C++类的C接口吗?
感谢您的答复。
YourClass_Create
,它内部调用构造函数(使用new
),并返回指向你的类实例的指针;对于客户端代码,这将只是一个不透明的句柄(它可以是void *
的typedef
),需要传递给你的C接口的每个函数,以指定它必须处理的实例(就像在stdio
中的FILE *
一样)。#ifdef
和extern "C" {}
,否则可能会出现链接器错误。
extern "C" {}
。 - user180326