我正在尝试在单独的 C 程序中使用一些用 C++ 编写的软件。
我已经在 .lib 文件中编译了必要的组件,并使用了一些 C 代码
#ifdef __cplusplus
extern "C" {
#endif
此代码将 C++ 对象方法调用封装在 C 可调用函数中。对象是在文件范围内声明的,指向对象的指针最初被检索,然后用于引用要调用该方法的对象。例如:
const void *GetHandle() {
return (void *) &obj;
}
然后调用一个方法:
int GetInt(const void *handle) {
Object *temp = (Object *) handle;
return temp->getInt();
}
这是解决问题的有效方法吗?目前,在我的 C 程序中仅使用 GetHandle() 方法时,当我尝试将它们的返回值分配给某些 const void * 变量时,我会收到错误消息“错误 C2099:初始化程序不是常量”。
编辑
修复了问题。我对标准 C 的无知在这里体现出来。我习惯了用于 dsPIC 的 Microchip C30,这有点不同。
我试图在任何函数之外声明和初始化指针。我确实将它们设置为 const 但这并不是真正必要的,所以我现在只需在外部声明,然后在 init 函数中初始化。我还把 extern "C" 放在 cpp 文件中所有函数的前面,现在都可以编译了。所以,感谢大家的帮助!