我在做一個rpc服務器/客戶端項目。硬編碼的端點版本運行良好,現在我想讓服務器動態設置端點。RPC C++服務器端動態端點
我做了一些研究,需要使用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()
的用法是錯誤的。
感謝您的任何建議和想法。
請提供[mcve]。特別是在你顯示的代碼中沒有'main',但是這似乎是錯誤是 – user463035818
你說「錯誤,當我運行服務器」但錯誤是一個鏈接器錯誤... – user463035818
「_我不知道是否缺少任何東西,或者'RpcNsBindingExport()'的用法是錯誤的_「在庫函數調用中出現這種錯誤(_unresolved external symbol_),最常見的原因是沒有鏈接到所述庫(.lib),其中該函數被定義,而不是因爲它的一些奇怪的用法(如果是 - 你會得到編譯錯誤,而不是鏈接錯誤)。請詳細說明「_poth rpcrt4.lib和rpcns4.lib包含在項目中的**」是什麼意思。「(」包含「一詞是什麼意思?)。 –