私は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()
の使用法が間違っている可能性があります。
ご意見ありがとうございます。
[mcve]を入力してください。特に、あなたが表示するコードには 'main'はありませんが、エラーが – user463035818
であると思われます。「サーバーを実行するとエラーが発生しますがエラーはリンカーエラーです...」 – user463035818
「_私はしません欠けているものがあるかどうか、あるいは 'RpcNsBindingExport()'の使用法が間違っていることを知っている_ "ライブラリ関数呼び出しのこのようなエラー(_unresolved external symbol_)は、最も一般的には前記ライブラリ(.lib)関数が定義されています。何らかの奇妙な使い方ではありません(エラーの場合は、コンパイルエラーが発生します)。あなたは "_ rpcrt4.libとrpcns4.libの両方がプロジェクトに**含まれています**"という意味で詳しく述べてください。 "("インクルード "という言葉はどういう意味ですか?) –