RPC C ++服务器端动态端点

时间:2017-10-05 13:37:25

标签: c++ server rpc

我正在做一个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()的使用是错误的。

感谢您的任何建议和想法。

1 个答案:

答案 0 :(得分:0)

通常,当编译器找不到lib文件时,会发生错误 LNK2019未解析的外部符号。尝试将.lib文件的完整路径放在链接器下拉列表中的其他依赖项中。并检查构建选项(x32或x64)。 x32 lib无法与x64应用程序一起使用。