我写了一个纯数据插件/外部,但API是在C中 所以我想用C ++编写大部分内容(2016年,对吧?)。
所以我认为我可以用C ++编写主要核心,并且插件只能向/从该核心程序发送/接收信息。
首先,我关于套接字,会更容易实现,但是 然后我读到了linux下的共享内存。
但是有可能在c和c ++之间做到这一点吗?
答案 0 :(得分:3)
在Linux进程之间共享内存发生在操作系统级别,它与编写程序的原始语言无关。它们都将使用系统调用来访问共享内存。只要您在“原始”模式下使用它,使用何种语言并不重要。
例外情况是,如果您尝试将内存用于结构化数据(即结构或类而不是“原始”字节数组)。然后你有各种特定于语言的怪癖需要解决(填充规则,vtable指针等)。
答案 1 :(得分:2)
C调用约定可以直接在C ++中使用和提供。不要欺骗自己。你不需要C语言中的任何“代理”插件和C ++中的主要核心 - 你可以用C ++编写该插件,暴露兼容的C API。
无论如何,您可以使用POSIX / linux系统函数从C ++中访问共享内存。它实际上只是普通的C函数调用,您可以直接在C ++中使用而无需编写任何“适配器”。