2017-10-05 24 views
0

私はrpcサーバー/クライアントプロジェクトを行っています。ハードコードされたエンドポイント・バージョンはうまくいきました。今や、サーバーにエンドポイントを動的にセットアップさせたいと考えています。RPC C++サーバー側の動的エンドポイント

私はいくつかの調査を行い、サーバーのネームサービスデータベースをエクスポートするためにRpcNsBindingExport()関数を使用する必要があります。クライアントは利用可能なバインディング情報を取得できます。サーバーコードはコンパイルできますが、サーバーを実行するとエラーが発生します。

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両方:ここに私のserver.cppのためのコードである LNK2019未解決の外部シンボル__imp__RpcNsBindingExportA 20 @は

_main機能で参照:エラーメッセージは、と言っています。 libはプロジェクトでリンクされています。行方不明のものがあるかどうかわからない、またはRpcNsBindingExport()の使用法が間違っている可能性があります。

ご意見ありがとうございます。

+2

[mcve]を入力してください。特に、あなたが表示するコードには 'main'はありませんが、エラーが – user463035818

+1

であると思われます。「サーバーを実行するとエラーが発生しますがエラーはリンカーエラーです...」 – user463035818

+0

「_私はしません欠けているものがあるかどうか、あるいは 'RpcNsBindingExport()'の使用法が間違っていることを知っている_ "ライブラリ関数呼び出しのこのようなエラー(_unresolved external symbol_)は、最も一般的には前記ライブラリ(.lib)関数が定義されています。何らかの奇妙な使い方ではありません(エラーの場合は、コンパイルエラーが発生します)。あなたは "_ rpcrt4.libとrpcns4.libの両方がプロジェクトに**含まれています**"という意味で詳しく述べてください。 "("インクルード "という言葉はどういう意味ですか?) –

答えて

0

通常、エラーLNK2019未解決の外部シンボルは、コンパイラがlibファイルを見つけられない場合に発生します。 .libファイルのフルパスをに追加してください。リンカーをドロップダウンしてください。ビルドオプション(x32またはx64)を確認します。 x32 libはx64アプリケーションなどでは動作しません。

+0

rpcns4.libはx32 libですが、私のビルドオプションはX64です。私はそれをx32に変更し、今すぐ動作します。それを指摘してくれてありがとう。 – tianhuaf

関連する問題