diff --git a/rostests/winetests/rpcrt4/CMakeLists.txt b/rostests/winetests/rpcrt4/CMakeLists.txt
index d28a9e1ea1b..799296c7618 100644
--- a/rostests/winetests/rpcrt4/CMakeLists.txt
+++ b/rostests/winetests/rpcrt4/CMakeLists.txt
@@ -5,9 +5,16 @@ add_definitions(-D_WIN32_WINNT=0x500)
add_definitions(
-D__ROS_LONG64__
-D_DLL -D__USE_CRTIMP)
+
+if(MSVC)
+ set(IDL_FLAGS ${IDL_FLAGS} /prefix server s_)
+else()
+ set(IDL_FLAGS ${IDL_FLAGS} --prefix-server=s_)
+endif()
add_rpc_files(client server.idl)
add_rpc_files(server server.idl)
+unset(IDL_FLAGS)
list(APPEND SOURCE
cstub.c
diff --git a/rostests/winetests/rpcrt4/rpcrt4.rbuild b/rostests/winetests/rpcrt4/rpcrt4.rbuild
index fc366d0284e..a74034a7473 100644
--- a/rostests/winetests/rpcrt4/rpcrt4.rbuild
+++ b/rostests/winetests/rpcrt4/rpcrt4.rbuild
@@ -12,6 +12,8 @@
.
0x0500
+
+ IServer_v0_0_s_ifspec
wine
pseh
ole32
diff --git a/rostests/winetests/rpcrt4/server.c b/rostests/winetests/rpcrt4/server.c
index 21b0cedf6ab..ccf995623ba 100644
--- a/rostests/winetests/rpcrt4/server.c
+++ b/rostests/winetests/rpcrt4/server.c
@@ -1542,12 +1542,12 @@ server(void)
if (pRpcServerRegisterIfEx)
{
trace("Using RpcServerRegisterIfEx\n");
- status = pRpcServerRegisterIfEx(IServer_v0_0_s_ifspec, NULL, NULL,
+ status = pRpcServerRegisterIfEx(s_IServer_v0_0_s_ifspec, NULL, NULL,
RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH,
RPC_C_LISTEN_MAX_CALLS_DEFAULT, NULL);
}
else
- status = RpcServerRegisterIf(IServer_v0_0_s_ifspec, NULL, NULL);
+ status = RpcServerRegisterIf(s_IServer_v0_0_s_ifspec, NULL, NULL);
ok(status == RPC_S_OK, "RpcServerRegisterIf failed with status %d\n", status);
status = RpcServerListen(1, 20, TRUE);
ok(status == RPC_S_OK, "RpcServerListen failed with status %d\n", status);