midl相关内容

在 IDL 中将 IUnknown 派生接口标记为对偶有什么意义?

查看我们的代码,我在一个 .idl 文件中发现了一个奇怪的定义: [目的,uuid(uuidhere),双重的,不可扩展,ole自动化,隐]接口 IOurInterface : IUnknown {//这里的方法}; 直接从 IUnknown 派生的接口怎么可能是双接口?如果我删除 dual 属性,会有什么问题吗? 解决方案 在 this answer 另一个关于编组 用户 voyce ..
发布时间:2022-01-14 12:07:49 其他开发

将 VS2017 从 15.4.1 升级到 15.5.1 导致构建错误

我正在使用以下工具/版本进行编程:Windows 10/VS2017 Professional/C++ 升级到 15.5.1 后出现以下错误: MIDL2338:开关是矛盾的 - no_robust 与 - 目标 Microsoft 编译器错误描述列表显示:编译 IDL 文件时,不能同时使用/osf 和/ms_ext 命令行开关. 我的项目属性中没有指定这些开关. 我 ..
发布时间:2022-01-12 08:24:52 C/C++开发

MIDL 更改接口名称

我有一个 COM dll ,它由使用 COM Inter-op 的 .NET 应用程序使用.在其中一个 CoClasses 中,有一个名为 IT6TrackData 的接口,它有一个名为 TrackData 的 get 属性 来自 IDL 文件: 接口 IT6TrackData{[propget, id(1)] HRESULT TrackData([out, retval] SAFEARR ..
发布时间:2021-11-30 14:06:20 C/C++开发

可以“枚举"吗?用于COM中的标志?

在COM对象的IDL中,请执行以下操作: 枚举TxMyFlags{,flagOption = 1,,flagOtherOption = 2,flagMoreOption = 4,flagAnotherFlag = 8,,flagExtra = 128//等等.}; 并具有可以将标志的总和(或按位或,相同的东西)的函数,例如(在IDL中) HRESULT _stdcall a_method ..
发布时间:2021-04-23 19:04:15 其他开发

从CMAKE调用MIDL编译器

我将在CMAKE中使用MIDL编译器,但无法从CmakeList调用MIDL编译器 这是我用来实现目标的命令 add_custom_command(输出$ {CMAKE_CURRENT_BINARY_DIR}/IFace.h $ {CMAKE_CURRENT_BINARY_DIR}/GUIDS.c $ {CMAKE_CURRENT_BINARY_DIR}/Proxy.c $ {CMAKE ..
发布时间:2021-04-22 19:46:06 C/C++开发

VS2017从15.4.1升级到15.5.1导致生成错误

我正在使用以下工具/版本进行编程:Windows 10/VS2017 Professional/C ++ 升级到15.5.1后,出现以下错误: MIDL2338:切换是矛盾的– no_robust与-目标 Microsoft编译器错误描述列表显示:编译IDL文件时,不能同时使用/osf和/ms_ext命令行开关. 这些开关中没有一个在我的项目属性中指定. 我试图降级到 ..
发布时间:2021-04-19 19:36:37 C/C++开发

出现MIDL 2003重新定义错误

我有一个非常简单的程序,在将其进一步扩展之前,我正在尝试对其进行编译.我正在尝试学习COM,因此沿在此,我在VS 2017中使用ATL模板创建了 app.h 和 app.cpp 文件.当我尝试构建解决方案时,出现很多MIDL 200重定义错误. 更新(基于@Roman R.的响应)请注意,如果我在Dev命令行上使用 cl/LD app.cpp ,我能够正确生成 app.dll .仅当尝试通过 ..
发布时间:2021-04-12 19:19:30 其他开发

预定义的IDL FILE中没有类型定义

首先, 使用普通 C ++,而没有ATL,MFC尝试使用COM Object接口. 使用 oleview (OLE/COM对象查看器)-用于设计IDL代码. 在此阶段,使用 MIDL 编译器,现在我在尝试生成以下内容时遇到麻烦: cmd行上的语法: midl/nologo/env win32/tlb“.\ S8_.tlb"/h“.\ S8_.h"/iid“.\ S8_ ..
发布时间:2020-06-30 22:00:12 C/C++开发

如何向Inproc COM服务器添加新接口并实现新接口

我已经实现了Windows桌面带(使用Windows SDK示例),并且需要一种与之通信的方式(一个调用以启动另一个应用程序的IPC,而IPC已经在工作). 我的COM经验非常有限,但是从我所看到的内容中推断,我认为应该可以创建一个新的COM接口,在deskband对象中实现它(我可以通过IBandSite访问),调用QueryInterface( )设置为我自己的界面,然后使用它直接呼叫桌 ..
发布时间:2020-06-30 22:00:08 其他开发

将两个.IDL文件或两个.tlb文件合并为一个文件

我有2个.net dll,我使用REGASM暴露给COM.为了简化在COM客户端中的引用,我想将它们合并为一个文件. 我尝试将两个文件都转换为IDL,然后将一个文件的“库"部分的内容复制到另一个文件中,然后使用MIDL编译回.tlb.这对于第二个IDL中的TypeDefs可以正常工作,但是当涉及到我复制的接口时,它似乎失败.OLE/COM查看器可以看到接口定义,但是当我尝试通过COM使用TL ..
发布时间:2020-06-30 22:00:02 其他开发

MIDL(常量)参考

MIDL方法声明中没有常量引用吗?? 例如 [id(1), helpstring("My Method")] HRESULT MyMethod( [in] IID & const rclsid ); 为 HRESULT MyMethod( IID const &rclsid ); 解决方案 MIDL并不真正支持参考参数,它仅支持"in"和"out"参数. ..
发布时间:2020-06-30 21:59:58 其他开发

如何读取winmd(WinRT元数据文件)?

WinMD是二进制的元数据文件,其中包含您需要了解的有关本机WinRT dll中可用的名称空间,类型,类,方法和参数的所有信息. 来自 Windows运行时设计 : 使用API​​元数据(.winmd文件)公开Windows运行时.这是.NET框架(Ecma-335)使用的相同格式.底层的二进制协定使您可以轻松地以所选的开发语言直接访问Windows运行时API. 每个.winm ..
发布时间:2020-06-30 21:58:45 其他开发

MIDL为/env win32和/env win64生成相同的文件

在Visual Studio中,编译foo.idl时,MIDL在foo_p.c中生成代理信息. 不幸的是,对于Win32和x64文件,它使用相同的文件名.对于Win32,文件开头为: #if !defined(_M_IA64) && !defined(_M_AMD64) 对于x64,文件开头为: #if defined(_M_AMD64) 当您为Win32进行构建,然后立 ..
发布时间:2020-06-30 21:58:42 其他开发

MIDL更改接口名称

我有一个COM dll,使用COM Inter-op的.NET应用程序会使用它. 在其中一个CoClass中,有一个名为IT6TrackData的接口,它有一个名为TrackData的get属性 从IDL文件中 Interface IT6TrackData { [propget, id(1)] HRESULT TrackData([out, retval] SAFEARRAY(B ..
发布时间:2020-06-30 21:58:33 C/C++开发

如何在idl中声明IStream,以便Visual Studio将其映射到s.w.interop.comtypes?

我有一个COM对象,该对象需要从C#客户端获取流并对其进行处理.看来我应该使用IStream.所以我像下面这样写我的idl.然后,我使用MIDL编译为tlb,并编译我的解决方案,注册它,然后将对我的库的引用添加到C#项目中. Visual Studio在我自己的库中创建一个IStream定义.如何阻止它执行此操作,并使其使用COMTypes IStream?似乎会有3个答案之一: 添加一些导 ..
发布时间:2020-06-30 21:58:30 C#/.NET

Midl找不到C预处理程序cl.exe

我正在尝试使用midl编译arith.idl文件.我正在运行Windows 7专业版. 这是我在Powershell提示符中启动的命令: PS> 'C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\midl.exe' .\arith.idl Microsoft (R) 32b/64b MIDL Compiler Versi ..
发布时间:2020-06-30 21:58:27 其他开发