问题标签 [midl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
617 浏览

midl - MIDL 在编译 IDL 文件时更改标识符的大小写

我有一个看起来像这样的 IDL 片段:

...当我用 MIDL 编译它然后查看生成的类型库时,VirtualMachine(大写 V)已变成virtualMachine(小写 V)。

XirtualMachine例如,如果我打电话给我的 coclass ,一切都很好。

我勒个去?

0 投票
2 回答
1752 浏览

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

查看我们的代码,我在 .idl 文件之一中发现了一个奇怪的定义:

直接派生的IUnknown接口怎么可能是双接口?如果我删除该dual属性,会有什么问题吗?

0 投票
1 回答
392 浏览

windows - 导入类型库时添加奇怪的命名空间

我想向IStream*我的 COM 接口添加一个接受方法。这是空闲摘录:

我编译.idl文件并将 typelib 导入另一个项目。

当我查看.tlbOLEView 文件时,我看到IStream在我的 typelib 中声明了但IUnknown不是。这会导致问题 - 当我尝试调用IMyInterface::LoadStream()另一个项目时,C++ 说它无法转换IStream*MyLibrary::IStream*. 同时它也不会抱怨 IUnknown。

为什么 MIDL 将 IStream 定义放在 typelib 中而不将其视为全局定义?

0 投票
1 回答
1053 浏览

c++ - 在 midl 生成的头文件中定义结构

我正在自动化构建遗留产品的过程中遇到了困难......

我有一个在 VC++ 6.0 中使用 midl 编译的 .idl 文件,以生成一个 .tlb、.h 和 .c 文件,该文件有一个手动构建步骤要添加:

就在生成的 .h 文件中的 MIDL_INTERFACE 之前。.h 文件的其余部分使用该定义,在添加之前我无法编译。

我正在寻找一种使用结构定义(首选)自动生成头文件的方法,或者至少是一种通过自定义构建步骤自动生成此代码添加步骤的方法。

0 投票
2 回答
349 浏览

c++ - 是什么导致 IDL 文件中的名称冲突?

我们有一个定义了多个接口的 idl 文件,其中两个接口是这样的:

它们是两个完全不相关的接口,恰好有一个同名的方法(尽管如图所示具有不同的大小写)。一切似乎都很好,但是当我们尝试编译一个调用的项目时

我们得到一个错误,说它不存在。如果我们打电话

它编译得很好。

如果我们重命名任一方法,它也可以编译。我不希望在两个不同的接口中发生命名冲突,但这似乎就是正在发生的事情。

我们可以通过简单地重命名其中一个来解决它,但我真的很想了解这个问题。谁能为我解释一下?谢谢

0 投票
1 回答
858 浏览

inheritance - MIDL 中的结构继承

我正在尝试继承和扩展 MIDL 中定义的结构。我使用了与接口继承相同的语法,即

但编译器会产生错误。

0 投票
1 回答
1798 浏览

.net - midl.exe 无法加载 mscorlib.tlb

我正在尝试使用 midl 将 idl 文件转换为 tlb。但是,当我尝试时,我收到此警告:

警告 MIDL2015:无法在 importlib 中加载 tlb:mscorlib.tlb

然后我得到一个后续错误:

错误 MIDL2337:不满足前向声明:_Object.....

我确定该错误是由于第一个警告引起的。我在另一台机器上尝试了相同的命令,它成功了,所以我知道 idl 文件是正确的。

我曾尝试卸载 .NET 框架并重新安装它,希望能解决问题,但没有任何效果。

所以我的问题是,我需要在我的机器上修复什么才能让 midl 再次找到 mscorlib.tlb?

0 投票
2 回答
1314 浏览

c# - 如何在 idl 中声明 IStream,以便 Visual Studio 将其映射到 swinterop.comtypes?

我有一个需要从 C# 客户端获取流并处理它的 COM 对象。看来我应该使用 IStream。所以我像下面这样写我的idl。然后我使用 MIDL 编译为 tlb,编译我的解决方案,注册它,然后将我的库的引用添加到 C# 项目。

Visual Studio 在我自己的库中创建一个 IStream 定义。我怎样才能阻止它这样做,并让它使用 COMTypes IStream?似乎会有 3 个答案之一:添加一些导入

  • 到 idl 所以它不会重新声明 IStream(导入 MSCOREE 会这样做,但不能解决 C# 问题)
  • 以某种方式在视觉工作室中为 IStream 别名 - 但我不知道如何做到这一点。
  • 我所有的想法都是完全错误的,我根本不应该使用 IStream

帮助...谢谢

0 投票
1 回答
403 浏览

c++ - 来自 scrrun.dll 的 ATL 和类型

我在 ATL 项目中有接口,该接口必须包含带有 Scripting::IDictionary** 参数的成员,但在带有我的接口描述的 MIDL 文件中,这是不可能的,因为默认库中没有提供脚本库。我总是有 scrrun.tlb 并试图在 MIDL 中使用它,但它不起作用

代码在这里:midl-code

0 投票
1 回答
901 浏览

windows - MIDL(常量)参考

MIDL 方法声明中没有常量引用吗???

例如。

为了