我正在做一个rpc服务器/客户端项目。硬编码端点版本运行良好,现在我想让服务器动态设置端点。
我做了一些研究,我需要使用RpcNsBindingExport()
函数导出服务器的名称服务数据库,然后客户端可以获取可用的绑定信息。服务器代码可以编译,但运行服务器时出错。错误消息说:
LNK2019未解析的外部符号__imp__RpcNsBindingExportA @ 20在函数_main中引用
这是我的server.cpp的代码:
main(){
//choose protocol sequence
status = RpcServerUseProtseq(
pszProtocolSequence,
RPC_C_PROTSEQ_MAX_REQS_DEFAULT,
pszSecurity
);
if (status) exit(status);
//get binding info for server
RPC_BINDING_VECTOR *binding_vector;
status = RpcServerInqBindings(&binding_vector);
//Export to a name service database for advertising
status = RpcNsBindingExport(
RPC_C_NS_SYNTAX_DEFAULT,
(unsigned char *)"hostname",
midl_v1_0_s_ifspec,
binding_vector,
NULL
);
if (status) exit(status);
//reg server
status = RpcEpRegister(
hello_v1_0_s_ifspec,
binding_vector,
NULL,
(unsigned char *)annotion
);
//listen
if (status) exit(status);
status = RpcServerListen(cMinCalls,
RPC_C_LISTEN_MAX_CALLS_DEFAULT,
fDontWait);
if (status) exit(status);
}
rpcrt4.lib和rpcns4.lib都在项目中链接。我不知道是否有任何遗漏,或者RpcNsBindingExport()
的使用是错误的。
感谢您的任何建议和想法。
答案 0 :(得分:0)
通常,当编译器找不到lib文件时,会发生错误 LNK2019未解析的外部符号。尝试将.lib文件的完整路径放在链接器下拉列表中的其他依赖项中。并检查构建选项(x32或x64)。 x32 lib无法与x64应用程序一起使用。