问题标签 [idl]

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 回答
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 回答
1950 浏览

java - ant中如何让idlj编译idl文件

我不知道如何在 ant 的帮助下使用 sun-idl 编译器 (idlj) 编译我的 idl 文件?

有人有想法吗?

0 投票
3 回答
5672 浏览

.net - 如何在命令行中从 .NET 程序集中获取 IDL(或如何将 TLB 转换为 IDL)?

我们有一个 .NET 程序集(实际上是 Aspose.Words),我们希望客户端可以轻松地从 COM 客户端使用它。

  1. 因此,我们将 .TLB 与程序集一起提供,这样客户就可以从 C++ 或 Delphi 等语言中使用它,而不必费心自己提取 .TLB。

  2. 我们还随程序集提供了一个 .IDL,以便客户可以查看它,如果他们想查看枚举值(例如,如果他们在 ASP 中编程)。

  3. 我希望 .TLB 和 .IDL 由构建脚本生成。我可以生成.TLB 没有问题。但我无法在命令行中生成 .IDL(或将 .TLB 转换为 .IDL 的替代方法)。我使用 OLEVIEW.EXE 手动执行此操作,这并不好。

听说 Delphi 的 TLIBIMP.EXE 听起来可以做到这一点,但它似乎并没有单独提供。

所以问题是:

  1. 上面的任何内容听起来很愚蠢?

  2. 如何使用命令行从 .NET 程序集中获取 .IDL。

谢谢。

0 投票
1 回答
826 浏览

java - 向 IDL 添加值类型,编译并失败并显示“未找到工厂”

我不明白为什么客户一直抱怨找不到工厂方法。我已经尝试过使用和不使用“factory”关键字的 IDL,但这并没有改变行为。SDMGeoVT IDL 匹配使用的其他对象(成功运行)。

生成的 SDMGeoVT 类在继承和方法方面与其他生成的类相匹配。

IDL 如下;idlj 编译器运行无错误。我在服务器上实现了该功能,我看到服务器代码运行并通过网络对对象进行序列化(服务器代码运行良好)。

客户端使用以下堆栈跟踪进行轰炸(前几行来自 jacORB 库)。

我创建了一个小应用程序来编译和测试代码(ArrayClient 和 ArrayServer)。基本应用程序(来自 jacORB 演示)运行良好。

我尝试使用基类 OFBaseVT 和单个对象(SDMGeoVT 与列表返回)并遇到同样的问题。

编辑:将 IDL 更改为结构与值类型有效。以前我创建了一个新界面,但由于同样的问题而失败。

编辑:是的也更新了服务器。服务器和客户端代码是相同的代码库。我必须放入构建这两个集合的 ant 脚本;-fall 和 -ftie 选项。

编辑:(6 月 10 日)将其缩小到原始构建者创建的过于复杂的框架(维护程序员,是的!)有一个需要完成的“超级”调用。

0 投票
1 回答
448 浏览

vba - 为什么 IDL 默认值看起来是四舍五入的?

我有一个带有可选最后一个参数的函数的 COM 对象。IDL 有点像这样:

这很好用:如果我不指定参数,则填写 50.6。但在几个开发环境(Excel VBA、VB6)中,默认值在显示前会四舍五入。输入左括号后,我看到:

SomeFunction( [参数 As Single = 51 ] )

有人知道为什么是这样吗?它是一个错误吗?这会让客户端程序员感到困惑......

0 投票
1 回答
1555 浏览

c++ - 带有 IDL/ODL 的 doxygen

如果你的 C++ 项目有一堆 .ODL 文件从 ODL 编译器生成的 .h 文件,应该告诉 doxygen 解析 .odl 和 .h,还是只解析其中一个?一般来说,我不喜欢记录生成的代码,但 IDL 是一种特殊情况。

无论如何,在我的测试中,ODL 文件的成员列表似乎不能正常工作,ODL 文件是否正确解析?

0 投票
0 回答
548 浏览

c++ - 导入类型库的 IDL 中的非限定名称

我创建了一个实现某些接口的 COM 类。我想向这个接口添加一个方法。该方法的参数是指向某个外部 olb 文件中定义的接口的指针。在我的项目中,这个 olb 文件在没有no_namespace指令的情况下导入。因此,方法参数中的接口名称必须在 h\cpp 文件中进行限定。但是 MIDL 不识别命名空间并在方法中生成带有不合格接口的头文件。所以,错误 C2061。一个小样本:

在 somelib.olb 中定义了 interface Foo。它在我的项目中的限定名称是someLib::Foo

MIDL 生成头文件 MyProject.h

和错误信息

如何解决这个问题呢?提前致谢。

0 投票
5 回答
6666 浏览

c# - 如何在 C# 和 C++ 代码之间共享常量?

我正在编写两个进程,其中一个使用 C# 和 WCF,第二个使用 C++ 和 WWSAPI。我希望能够在一个地方定义用于两者之间通信的地址,并让 C# 和 C++ 都使用它。这可能吗?

我最接近的是在 IDL 中定义常量,然后使用 MIDL 和 TLBIMP 将其放入 C# 可以使用的 DLL 中。然而,这似乎并没有暴露常量,或者至少我不知道如何让它这样做。也许它仅限于类型定义。

还有其他建议吗?

0 投票
2 回答
1917 浏览

visual-studio - Visual Studio 如何确定编译 IDL 文件的顺序?

我有一个 COM 项目,其中包含许多 IDL 文件,其中一些被导入到其他文件中。Visual Studio 如何决定首先编译哪些(使用 MIDL)?

我想控制顺序。我有一个主 IDL 文件,其中包含我的库声明和几个导入,如果它不是第一个编译的,我会收到构建错误。

(如果这听起来真的很奇怪......我是 COM/ATL 的新手,这真的非常令人困惑)。

0 投票
1 回答
389 浏览

com - 使用大量 IDL 接口管理 COM 类型库中的定义

我正在创建一个具有一百多个接口的 COM 类型库。在单个中定义所有接口和 coclasslibrary是不合理的...... IDL 文件变成了数千行!所以我尝试将每个接口放在自己的文件中,并使用imports 来满足其依赖关系。

我可以使用什么策略来管理这么多接口?我试图在import任何地方使用指令,但我一直试图将它们包含在 TLB 中。我已经尝试过#includelibrary但依赖项似乎变得很时髦。

示例A.idl

ExampleB.idl

示例库.idl