RPC C++ 服务器端动态端点
RPC C++ server side dynamic endpoint
我正在做一个 rpc server/client 项目。硬编码端点版本运行良好,现在我想让服务器动态设置端点。
我做了一些研究,我需要使用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()
的用法不对。
感谢您的任何建议和想法。
通常,错误LNK2019 未解析的外部符号 是编译器找不到lib 文件时发生的。尝试将 .lib 文件的完整路径放在链接器下拉列表下的 Additional dependencies 中。并检查构建选项(x32 或 x64)。 x32 库不能与 x64 应用程序一起使用,否则。
我正在做一个 rpc server/client 项目。硬编码端点版本运行良好,现在我想让服务器动态设置端点。
我做了一些研究,我需要使用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()
的用法不对。
感谢您的任何建议和想法。
通常,错误LNK2019 未解析的外部符号 是编译器找不到lib 文件时发生的。尝试将 .lib 文件的完整路径放在链接器下拉列表下的 Additional dependencies 中。并检查构建选项(x32 或 x64)。 x32 库不能与 x64 应用程序一起使用,否则。