如果我生成服务器和客户端存根,名称将相同,因此链接器由于符号名称冲突而无法创建可执行文件。我怎样才能以最简单的方式解决这个问题?
事实证明错误出在我的设置中。 我对 rpcgen 使用了 -k 选项,这导致了奇怪的行为:它确实为一个函数只生成了一个函数名称:
returnType function_1();
而不是
returnType function_1(void *, CLIENT *);
returnType function_1_svc(void *, struct svc_req *);
-k 是一个未记录的参数,从 rpcgen 的源代码来看,它是 K&R 风格的代码生成(与 ANSI C 相反)。它只定义了一个函数(没有其他带有 _svc 后缀的函数),并且没有参数。