问题标签 [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 投票
3 回答
21081 浏览

c# - 将接口 IDL 文件转换为 C#

我在 IDL 文件中定义了一个接口,我想在 C# 中使用它。有没有办法将 IDL 转换为 C# 中可用的东西?

0 投票
2 回答
1830 浏览

c++ - 如何在 IDL 中声明一个宽字符常量

我们正在将我们的 C++ COM 应用程序迁移为 unicode,作为此迁移的一部分,我们希望将 IDL 中的常量字符串也迁移到 unicode。

问题是目前我们仍然在 ANSI 和 UNICODE 中编译它,这意味着我们不能使用 L"String" 构造来声明宽图表。

目前,我们的字符串常量定义如下:

const LPSTR STRING_CONST_NAME = "字符串值";

我们想这样定义它:

const LP T STR STRING_CONST_NAME = "字符串值";

如果它是常规代码,我们只需添加 _T("STRING VALUE") 宏,它会在以 unicode 编译时将其转换为 L"STRING VALUE"

但据我所知,我们不能在 IDL 中使用它,因为 _T 是纯 C++ 构造。

我们的方法是否正确?也许我们无论如何都应该这样定义它:

const LP T STR STRING_CONST_NAME = L "字符串值";

0 投票
1 回答
1661 浏览

c++ - C++ 到 IDL 工具

是否有任何免费工具可以将 c++ 代码转换为 idl?我正在考虑类似于 java2idl 的东西。

0 投票
1 回答
1722 浏览

.net - 如何为 COM 使用创建 propput IDL 方法 .NET 接口

我在 Excel/VBA 中使用 .NET/ComVisible 程序集时遇到问题。我在 .NET 中将几个参数定义为“对象”,因此它们将在 VBA 中转换为 Variant,因为 VBA 中的可选参数需要使用 Variant 类型。

问题是当我尝试在 Excel/VBA 中使用该对象时,我收到“运行时错误'424':需要对象”。我认为我在 C# 界面中缺少属性,该属性将添加一个“ propput ”方法而不是“ propputref ”方法,该方法将允许变量中的值,但我在互联网上没有找到任何答案,只是类似的问题。我看到了 System.Reflection.BindingFlags,但这似乎只适用于编译时和运行时代码,不适用于接口定义。

底层数据类型是双精度的,我需要它为空或通过 COM/VBA 的双精度。我对字符串参数没有问题,只是变体/双精度。

这是C#接口:

这是 C# 对象:

这是VBA的用法:

这是来自 OleView 的类型库 IDL:

似乎唯一的解决方案是手动生成 IDL,然后将其导入 .NET,就像在这个线程中使用 VB.NET 和 VB6一样。那是唯一的解决方案吗?这篇关于The Essentials for Using COM in Managed Code的文章也非常好,但没有涵盖在 .NET/C# 中定义接口。

0 投票
2 回答
1547 浏览

position - 如何找到给定纬度/经度以东/西 x 公里的纬度/经度?

我有两个给定的纬度和经度点。例如,假设我在坐标 (lat1, lon1) 和 (lat2, lon2) 处有两个位置(point_1 和 point_2)。我想计算第三个点,它与 point_2 的纬度相同,但在 point_2 以东或以西 x 公里处。所以第三个点将与 point_2 具有相同的纬度,但经度不同,具体取决于距离 x(以公里为单位),换句话说,point_3 将是 (lat2, lon?)。我用 IDL 写这个,但任何其他语言或公式都会受到欢迎。

谢谢

0 投票
2 回答
11609 浏览

com - COM IDL 定义中 [in, out] 和 [out, retval] 的区别

在我使用的一些 IDL 中,我注意到在方法中标记返回值有两种约定 -[in, out][out, retval].

似乎[in, out]在有多个返回值时使用,例如:

似乎[out, retval]只有一个返回值时使用,例如:

这是 COM IDL 约定还是我正在使用的代码中的约定?

从这两种符号生成的代码是否存在功能差异,或者它们是否完全可以互换?

0 投票
1 回答
553 浏览

java - 如何在java中杀死名称服务器进程

我使用 IDL 文件构建了一个客户端服务器应用程序,用于跨网络的客户端服务器通信。客户端和服务器程序都在 java 中。当用户进入退出时,服务器和客户端都退出。但是我无法终止名称服务器进程。我使用命令启动了名称服务器

tnameserv -ORBInitialPort 1050

如何杀死客户端或服务器程序(在 java 中)中的名称服务器?

0 投票
2 回答
1082 浏览

c++ - 可以将预编译的头文件与 MIDL 生成的文件一起使用吗?

我们确实有一个项目,它使用 MIDL 工具来创建特定的头文件/iid 和代理文件。这些文件使用调用 nmake 的构建后步骤编译并与项目的其余部分链接。

是否可以将预编译的头文件与 IDL 生成的文件一起使用?如何注入#include "stdafx-h"和删除其他包含的标头?

0 投票
3 回答
2426 浏览

c# - C# - 编写 COM 服务器 - 映射到方法的属性

我们正在尝试替换最初为 VB6 应用程序编写的 COM 服务器

我们无权访问源代码。

出于某种原因,VB6 应用程序可以调用我们的构造函数,但随后它得到:

系统错误 &H80004002。不支持这样的接口。

我假设当它尝试使用 QueryInterface 获取接口时。

我们通过 regasm /tlb 和 gacutil 正确发送了我们的程序集,但我随后注意到了一些奇怪的事情。我打开为我们的程序集生成的 .tlb 文件 regasm,并注意到我界面上的所有属性都显示为方法。

这是 .Net 工具正在做的事情吗?这会导致我的问题吗?

这是原始文件的完整 tlb 定义:

这是我的 .Net 程序集的生成 tlb:

不知何故,我的属性被列为方法......即使我添加 PreserveSig,它仍然会编写 2 个方法而不是使它们成为属性。

我应该尝试进行哪些更改以使其与原始 tlb 相同?或者至少让它工作。

更新:找到我的事件界面上没有 DispIdAttribute 的地方。修复了这个问题,但 VB6 应用程序仍然失败并出现同样的错误。

0 投票
2 回答
1752 浏览

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

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

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