问题标签 [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 回答
17838 浏览

com - 什么是 stdole2.tlb

stdole32.tlb 包含所有基本类型定义,如果我们使用 MIDL,每个库都必须导入它。但是当我创建 ATL DLL 项目时,lib 文件看起来像这样

我无法用谷歌搜索 stdole2.tlb 中的内容?它是否包含 stdole32.tlb?还有什么?有人可以帮我找出来吗?

0 投票
1 回答
412 浏览

c++ - Windows 异步 RPC C++ MIDL

我有一个来自客户端的 MIDL 生成的 C++ RPC 接口,它定义了两个简单的 RPC 函数。

我正在尝试从一个简单的 C++ 应用程序与服务器通信。我只有头文件 - 我是否还需要客户端存根才能成功链接我的程序?

0 投票
3 回答
313 浏览

.net - 为什么 TlbImp 不能将此用于 DIA 的 COM 接口正确导入 .NET?

我尝试导入 Microsoft 的 DIA SDK 以用于 .NET:

这似乎在大多数情况下都可以正常工作,只是由于某种原因,它不包含某些接口(例如IDiaEnumFrameData),而包含其余接口则很好。

(该接口既不存在于 .DLL 文件中,也不存在于 .TLB 文件中——即使它存在于 C 和头文件中。)

这是什么原因造成的?

0 投票
0 回答
385 浏览

com - 如何强制 MIDL 为空的 coclass 输出 CLSID?

我在项目的 IDL 文件的库块中有一个声明,如下所示:

此类实现的唯一接口是标准的 Microsoft 定义的接口(例如 IPersistPropertyBag2)。如果我将它们包含在“MyClass”的定义中,那么它们就会被吸入类型库,这是我不想要的。问题是,如果我像上面那样将接口列表留空,那么 MIDL 将不会在生成的头文件或类型库中包含该类。

所以问题是:如何强制 MIDL 在类型库中包含“MyClass”?

或者,甚至更好:如何强制 MIDL 从类型库中排除coclass 中的某些接口?

0 投票
1 回答
128 浏览

visual-studio - VS6 中的 MIDL 选项卡

我被分配构建一个 Visual Studio 6 C++ 项目(我知道这本身就是一个问题......)。我向项目中添加了一个 IDL 文件,但 MIDL 选项卡未显示项目或文件本身。如何使 MIDL 选项卡出现?谢谢你。

0 投票
1 回答
127 浏览

windows - 谁调用了我的 RPC?

我正在构建一个 Microsoft RPC 服务器,我想知道是否有办法确定哪个用户调用了 RPC 函数?(意思是,哪个用户正在运行调用 RPC 方法的进程)

0 投票
3 回答
1936 浏览

midl - 如何使用 MIDL 生成 x86 和 x64 代码?

如何使用 MIDL 为 x86 和 x64 生成代码?

我在 Visual Studio 2010 中创建了一个 IDL 文件,当我在 x86 模式下编译产品时,然后在 x64 中编译产品时,我必须“触摸”该 IDL 文件,以便它重新生成与 x64 相关的代码。我可以以某种方式告诉 MIDL 将两个代码生成到同一个文件中吗?

0 投票
1 回答
783 浏览

c# - 在 IDL 库中包含 C# 接口

我在 C# 中定义了一个接口,例如:

我想将它包含在 IDL 中定义的库中。我试图通过从 C# 接口生成一个 .tlb 并将其包含在 importlib 中来实现这一点。但是,当我编译我的 idl 文件时,我在我的库中没有看到这个接口,但是我通过导入他们的 idl 文件看到了我在这个库中定义的所有其他接口。

总之,我想知道:

  • 是否可以在 IDL 库中包含 C# 接口?
  • 如果是这样,我该怎么做?

欢迎所有答案。提前感谢您提交的任何答案。

0 投票
1 回答
451 浏览

visual-c++ - 创建从另一个(简单)继承的简单接口时出现错误 MIDL5004

我有以下非常简单的接口:

当我尝试为 WinRT 编译此 MIDL 时,我收到以下错误:

错误MIDL5004:接口必须从 IInspectable 继承:ICitizen

我真的很困惑在 WinRT 下 COM 变成了什么!如果从另一个接口继承这样简单的事情不再可能,我们如何设计应用程序?

我已经搜索了 WinRT 的 MIDL 的文档,但我找不到它!更好的是在谷歌上搜索错误 MIDL5004 没有显示任何结果!

Microsoft 的任何人都可以解释如何创建一个从另一个继承自 IInspectable 的接口继承的接口。在另一个测试中,我使用 C++/CX 创建了相同的接口,并且能够创建一个继承自 IPerson 的 ICitizen 接口。为什么 WinRT 的 MIDL 不再允许这样做,这是 COM 体系结构的基础,创建了接口层次结构。

感谢您的投入 O. Rouit

0 投票
0 回答
765 浏览

com - 如何通过 COM InterOp 访问暴露多个接口的 CoClass?

我有一个 CoClass,描述如下:

所以我的问题是:

  1. 为什么tlbimp只暴露IFoo接口,同时oleview.exe显示两个接口?
  2. tlbimp只公开[default]接口,为什么?(根据 MSDN [default] “旨在供宏语言使用。”
  3. 如何在 MIDL/COM 中建模这种情况?我应该使用关联而不是继承吗?