Windows RPC编程错误:LNK 2019未解析的外部符号RPCServerListen

时间:2015-05-04 12:57:57

标签: c rpc

我正在学习C Windows RPC编程。这是我编写和编译的虚拟RPC服务器的源代码,没有错误:

Y

midl文件的编译也没有错误。 MIDL编译按预期生成#include <stdio.h> #include "md5_h.h" #include "rpc.h" #include "rpcndr.h" int main() { RPC_STATUS status; status = RpcServerUseProtseqEp( (RPC_WSTR)("ncacn_ip_tcp"), RPC_C_PROTSEQ_MAX_REQS_DEFAULT, (RPC_WSTR)("9191"), NULL); if (status) { exit(status); } status = RpcServerRegisterIf( md5_v1_0_c_ifspec, NULL, NULL); if (status) { exit(status); } status = RpcServerListen( 1, RPC_C_LISTEN_MAX_CALLS_DEFAULT, FALSE); if (status) { exit(status); } return 0; } void __RPC_USER midl_user_free(void* p) { free(p); } void md5(const unsigned char* szMsg) { printf("voila %s\n", szMsg); } md5_s.c。如果需要,这里是md5_c.c文件:

md5.idl

在链接阶段,会产生以下错误:

[
uuid(D86FBC01-D6A7-4941-9243-07A4EC65E8CB),
    version(1.0),
]
interface md5
{
  void md5([in, string] const char* szMsg);
};

我对每个特定于RPC的函数都有相同的错误,例如LNK2019: unresolved external symbol __imp__RpcServerListen referenced in function main RpcServerRegisterIf。我正在使用Microsoft Visual Studio 2013。

我认为这来自于缺失的内容;但我无法确定哪一个。我试图包含RpcServerUseProtseqEp,没有任何改变。

我是否必须在我的项目中包含生成的rpc.h?我没有解决任何问题,我试过了。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您需要链接Rpcrt4.lib。 如果您使用的是visual studio,请将其添加到Project - &gt;属性 - &gt;配置属性 - &gt;链接器 - &gt;输入 - &gt;附加依赖。