我在C中有一个现有的库,我希望能够允许远程访问(从Linux或Windows)。
我查看了常见的RPC嫌疑人,如Thrift和Protobuf,但这些都没有干净地处理C风格的函数调用(像pass-by-ref,char *而不是string,*而不是List<>等等) )。
简而言之,要使用其中任何一个,我看起来需要从头开始编写完整的IDL,并添加许多样板代码以将C风格的函数调用传输到这些环境中。
是否有任何RPC库
答案 0 :(得分:1)
嗯,有protobuf-c,是C语言中protobuf的实现。
然后是大多数/(所有?)unix类系统中的经典XDR,也存在用于windows的版本。另请参阅包含API概述的Linux xdr(3) man page。
请注意,protobuf和XDR都是序列化库,它们不提供RPC。 XDR的“伴随RPC库”被称为RPC,但是我不认为有人用这个编写新代码,而AFAICS是特定于unix的(portmap不在windows上运行,是吗?无论如何,这通常是一个坏主意。)然后是protobuf-c-rpc,这是protobuf RPC库的C版本;可能比经典RPC更好的选择。