Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ midl.exe 6和midl.exe 7的不同输出_Visual C++_Rpc_Midl - Fatal编程技术网

Visual c++ midl.exe 6和midl.exe 7的不同输出

Visual c++ midl.exe 6和midl.exe 7的不同输出,visual-c++,rpc,midl,Visual C++,Rpc,Midl,我正在将MSVC项目从VS2005转换为VS2008。它包含一个IDL文件,该文件输出用于RPC的头和存根。VS 2005项目使用MIDL.exe版本6.00.0366。VS 2008项目使用MIDL.exe版本7.00.0500 问题在于:MIDL v6输出以下原型,供我在服务器代码中实现: HRESULT PRC_Function(UINT input); MIDL v7使用相同的命令行输出此原型: HRESULT RPC_Function(handle_t IDL_handle, UIN

我正在将MSVC项目从VS2005转换为VS2008。它包含一个IDL文件,该文件输出用于RPC的头和存根。VS 2005项目使用MIDL.exe版本6.00.0366。VS 2008项目使用MIDL.exe版本7.00.0500

问题在于:MIDL v6输出以下原型,供我在服务器代码中实现:

HRESULT PRC_Function(UINT input);
MIDL v7使用相同的命令行输出此原型:

HRESULT RPC_Function(handle_t IDL_handle, UINT input);
我不想将handle\u t参数添加到所有现有的实现中。(另外,我还需要在一段时间内使用VS2005编译这些实现。)


问题:如何让MIDL.exe v7输出与v6相同的RPC服务器原型?

看起来我可以回答自己的问题

MIDL v6似乎自动将服务器原型的句柄类型默认为auto_handle。MIDL v7没有,因此解决方案是使用一个包含自动句柄设置的Server.acl文件。这将输出一个Server.h文件,其中包含MIDLV6和v7之间相同的函数原型

但是,它也会输出一条警告,指示“auto_handle”已贬值。相反,我使用了隐式句柄(handle\u t IDL\u handle)


可惜这个网站没有给我徽章来回答我自己的问题。我也不能将自己的答案标记为正确答案。

看起来我可以回答自己的问题

MIDL v6似乎自动将服务器原型的句柄类型默认为auto_handle。MIDL v7没有,因此解决方案是使用一个包含自动句柄设置的Server.acl文件。这将输出一个Server.h文件,其中包含MIDLV6和v7之间相同的函数原型

但是,它也会输出一条警告,指示“auto_handle”已贬值。相反,我使用了隐式句柄(handle\u t IDL\u handle)


可惜这个网站没有给我徽章来回答我自己的问题。我也不能将自己的答案标记为正确答案。

句柄IDL\u句柄用于显式RPC绑定句柄。在服务器端,您可以使用它做一些很酷的事情,比如通过各种RPC函数提取调用客户端的令牌进行模拟,但是如果您不需要使用它,只需将其设置为未引用的参数(未引用的_参数(IDL_handle);)。现在隐式绑定句柄似乎已被弃用


在客户端,使用绑定到RPC服务器时获得的绑定句柄作为IDL\u句柄参数。

句柄IDL\u句柄用于显式RPC绑定句柄。在服务器端,您可以使用它做一些很酷的事情,比如通过各种RPC函数提取调用客户端的令牌进行模拟,但是如果您不需要使用它,只需将其设置为未引用的参数(未引用的_参数(IDL_handle);)。现在隐式绑定句柄似乎已被弃用


在客户端,使用绑定到RPC服务器时获得的绑定句柄作为IDL_handle参数。

很少有人处理RPC。我是在这里发现的。查尔斯-我是少数使用RPC的人之一,我遇到了一个听起来与你的问题相似的问题,我想知道你是否可以发布一些关于你的问题的更多见解。我的问题是MIDLV7试图在同一服务的第二个接口中创建运行例程。MIDLV5不这样做…很少有人处理RPC。我是在这里发现的。查尔斯-我是少数使用RPC的人之一,我遇到了一个听起来与你的问题相似的问题,我想知道你是否可以发布一些关于你的问题的更多见解。我的问题是MIDLV7试图在同一服务的第二个接口中创建运行例程。MIDL v5不这样做。。。