问题标签 [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.
c# - 将接口 IDL 文件转换为 C#
我在 IDL 文件中定义了一个接口,我想在 C# 中使用它。有没有办法将 IDL 转换为 C# 中可用的东西?
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 "字符串值";
c++ - C++ 到 IDL 工具
是否有任何免费工具可以将 c++ 代码转换为 idl?我正在考虑类似于 java2idl 的东西。
.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# 中定义接口。
position - 如何找到给定纬度/经度以东/西 x 公里的纬度/经度?
我有两个给定的纬度和经度点。例如,假设我在坐标 (lat1, lon1) 和 (lat2, lon2) 处有两个位置(point_1 和 point_2)。我想计算第三个点,它与 point_2 的纬度相同,但在 point_2 以东或以西 x 公里处。所以第三个点将与 point_2 具有相同的纬度,但经度不同,具体取决于距离 x(以公里为单位),换句话说,point_3 将是 (lat2, lon?)。我用 IDL 写这个,但任何其他语言或公式都会受到欢迎。
谢谢
com - COM IDL 定义中 [in, out] 和 [out, retval] 的区别
在我使用的一些 IDL 中,我注意到在方法中标记返回值有两种约定 -[in, out]
和[out, retval]
.
似乎[in, out]
在有多个返回值时使用,例如:
似乎[out, retval]
只有一个返回值时使用,例如:
这是 COM IDL 约定还是我正在使用的代码中的约定?
从这两种符号生成的代码是否存在功能差异,或者它们是否完全可以互换?
java - 如何在java中杀死名称服务器进程
我使用 IDL 文件构建了一个客户端服务器应用程序,用于跨网络的客户端服务器通信。客户端和服务器程序都在 java 中。当用户进入退出时,服务器和客户端都退出。但是我无法终止名称服务器进程。我使用命令启动了名称服务器
tnameserv -ORBInitialPort 1050
如何杀死客户端或服务器程序(在 java 中)中的名称服务器?
c++ - 可以将预编译的头文件与 MIDL 生成的文件一起使用吗?
我们确实有一个项目,它使用 MIDL 工具来创建特定的头文件/iid 和代理文件。这些文件使用调用 nmake 的构建后步骤编译并与项目的其余部分链接。
是否可以将预编译的头文件与 IDL 生成的文件一起使用?如何注入#include "stdafx-h"
和删除其他包含的标头?
c# - C# - 编写 COM 服务器 - 映射到方法的属性
我们正在尝试替换最初为 VB6 应用程序编写的 COM 服务器
我们无权访问源代码。
出于某种原因,VB6 应用程序可以调用我们的构造函数,但随后它得到:
系统错误 &H80004002。不支持这样的接口。
我假设当它尝试使用 QueryInterface 获取接口时。
我们通过 regasm /tlb 和 gacutil 正确发送了我们的程序集,但我随后注意到了一些奇怪的事情。我打开为我们的程序集生成的 .tlb 文件 regasm,并注意到我界面上的所有属性都显示为方法。
这是 .Net 工具正在做的事情吗?这会导致我的问题吗?
这是原始文件的完整 tlb 定义:
这是我的 .Net 程序集的生成 tlb:
不知何故,我的属性被列为方法......即使我添加 PreserveSig,它仍然会编写 2 个方法而不是使它们成为属性。
我应该尝试进行哪些更改以使其与原始 tlb 相同?或者至少让它工作。
更新:找到我的事件界面上没有 DispIdAttribute 的地方。修复了这个问题,但 VB6 应用程序仍然失败并出现同样的错误。
windows - 在 IDL 中将 IUnknown 派生接口标记为对偶有什么意义?
查看我们的代码,我在 .idl 文件之一中发现了一个奇怪的定义:
直接派生的IUnknown
接口怎么可能是双接口?如果我删除该dual
属性,会有什么问题吗?