Windows RPC programming error: LNK 2019 unresolved external symbol RPCServerListen
Windows RPC programming error: LNK 2019 unresolved external symbol RPCServerListen
我正在学习 C Windows RPC 编程。这是我编写和编译没有错误的虚拟 RPC 服务器的源代码:
#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);
}
midl 文件的编译也没有错误。 MIDL 编译会按预期生成 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);
};
在链接阶段产生以下错误:
LNK2019: unresolved external symbol __imp__RpcServerListen referenced in function main
我对每个特定于 RPC 的函数都有相同的错误,例如 RpcServerRegisterIf
或 RpcServerUseProtseqEp
。我使用的是 Microsoft Visual Studio 2013.
我认为这是由于缺少包含;但我不知道是哪一个。我试图包括 rpc.h
,没有任何变化。
我是否必须在我的项目中包含生成的 md5_s.c
?我已经尝试过但没有解决任何问题。
感谢您的帮助!
您需要 link 对抗 Rpcrt4.lib。
如果你使用的是visual studio,在项目->属性->配置属性->链接器->输入->附加依赖项中添加。
我正在学习 C Windows RPC 编程。这是我编写和编译没有错误的虚拟 RPC 服务器的源代码:
#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);
}
midl 文件的编译也没有错误。 MIDL 编译会按预期生成 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);
};
在链接阶段产生以下错误:
LNK2019: unresolved external symbol __imp__RpcServerListen referenced in function main
我对每个特定于 RPC 的函数都有相同的错误,例如 RpcServerRegisterIf
或 RpcServerUseProtseqEp
。我使用的是 Microsoft Visual Studio 2013.
我认为这是由于缺少包含;但我不知道是哪一个。我试图包括 rpc.h
,没有任何变化。
我是否必须在我的项目中包含生成的 md5_s.c
?我已经尝试过但没有解决任何问题。
感谢您的帮助!
您需要 link 对抗 Rpcrt4.lib。 如果你使用的是visual studio,在项目->属性->配置属性->链接器->输入->附加依赖项中添加。