问题标签 [tlbimp]

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 投票
1 回答
1542 浏览

c# - 使用 .Net 的 COM exe 中的类

我有一个 .exe 文件,里面有 COM 类——这些来自 C++,而不是 .netComVisible类型

我想在我的 .net 项目中使用这些类,但我无法添加对 exe 的引用;当我尝试我得到

tlbimp 也失败了;

但看起来好像有可用的 COM 类;在我的HKEY_CLASSES_ROOT蜂巢中,我可以看到不同 COM 类的条目;

任何人都知道如何,即使,我可以在 .net 项目中使用这些 COM 类?

0 投票
1 回答
912 浏览

.net - 如何使用 tlbimp.exe 的 /keycontainer 开关?

有人有一个如何使用命令行开关tlbimp.exe的例子吗?/keycontainer

谷歌......他们没有帮助。它总是/publickey,或者/keyfile. 没有使用的例子/keycontainer

0 投票
1 回答
552 浏览

.net - 使用 Visual Studio 添加 COM 引用会重命名 Interop Assembly 中的接口

我正在添加一个 C++ COM dll 作为对 C# 项目 (Visual Studio 2008) 的引用。VS 添加了引用,但是生成的互操作库不反映原始类型库 (.idl) 定义中的命名。这是我的库定义的样子:

因此,IMyInterface 继承自 IMyInheritedInterface,而后者又继承自 IMyBaseInterface。添加此 COM 的 .dll 后,我希望所有这些接口都可用。在 VS 为上面的 typelib 生成的互操作程序集中,IMyInterface 变为 MyInterface。为什么以及是否有解决方法?

谢谢

0 投票
1 回答
869 浏览

.net - 使用自定义程序集信息将 TLB 文件转换为程序集

我正在使用 tlbimp.exe 从 TLB 文件生成程序集。我知道我可以使用“asmversion”命令行开关来设置自定义版本号,但是如何设置其他信息呢?我想设置“产品名称”和“公司”之类的字段,但我看不到这样做的方法。可以用 tlbimp 或任何其他工具来完成吗?

0 投票
2 回答
5081 浏览

com - 类型库导入器在类型验证期间遇到错误

我正在编写一个具有多个 COM 引用的 C# 应用程序。当我尝试构建它时,其中一些出现以下错误:

c:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(1418,9):错误 MSB3303:无法解析 COM 引用“70850f66-869f-44a0-88e7-b0460a7e3bf3”版本 0.1。类型库导入器在类型验证期间遇到错误。尝试在没有类成员的情况下导入。

该应用程序仍然构建并成功运行。

此错误消息是什么意思,我该如何解决?

0 投票
0 回答
16716 浏览

c# - 如何使用 TLBIMP.EXE?

我在我的 Visual Studio 文件夹中找到了它,但是当我打开它时,它会立即加载并关闭。这是实现其功能的正确方法吗?

0 投票
2 回答
1173 浏览

com - 在不同的机器上获取 COM 异常 80040154

我遇到以下问题,有人可以帮忙吗?我使用 Tlbimp 实用程序并将 VB6 COM DLL 转换为 RCW DLL。在我的 Visual Studio 2008 中,我使用了“添加引用”并在 c# 类中使用了该 DLL。在我的机器上一切正常。但是,如果其他人在他/她的机器上使用相同的项目,那么在该机器上他们会收到以下错误:“由于以下错误 80040154,检索具有 CLSID {x} 的组件的 COM 类工厂失败”。我试图在该机器上搜索该 CLSID GUID,但在 HKCR/CLSID 位置下找不到。

有没有人有线索/想法为什么它在不同的机器上给出问题以及我可以尝试解决这个问题?

谢谢。

0 投票
2 回答
1759 浏览

c# - 从 C# COM dll 返回 S_FALSE

我在 IDL 中定义了一个方法,如下所示:

使用 C++ 我总是按如下方式实现:

现在我在 C# 中实现它并在类型库上使用了 tlbimp 并最终得到:

我知道这是因为 [out, retval] 用作返回类型,而不是 C++ 中的 HRESULT。有没有一种简单的方法可以在不更改方法定义的情况下返回 S_OK / S_FALSE 值?我能看到的唯一方法是我必须使用 ildasm / ilasm 来添加 preservesig 所以我最终得到了这样的结果:

我想知道是否有其他方法不执行 il 编译步骤。

0 投票
6 回答
16887 浏览

visual-studio-2010 - Visual Studio 2010,TlbImp 在 2.0 项目中生成 .net 4.0 互操作

在 C# 项目中,我们通过指向 COM 对象的添加引用设置添加对 COM 对象的引用,这会导致 IDE 自动生成互操作程序集。所以这很好,但我们是基于 .net 3.5 SP1 aka CLR 2.0 构建的,并且生成的互操作使用 4.0 CLR,这使得它们不兼容。有没有办法防止这种情况?

我假设另一个选项是配置我们的构建脚本以尝试将 tlbimp.exe 与 /references 参数一起使用?指向 mscorlib v2.0?

无论如何,我希望某处有一面旗帜可以允许这样做。

0 投票
1 回答
624 浏览

import - 无法使用 tlbimp 签署导入的 msi.dll 程序集

这似乎很微不足道,但我无法让它工作..

我有一个需要签名的 msi.dll 包装器(名为 Interop.WindowsInstaller.dll)。这样做的方法是在导入时对其进行签名(这种特定情况甚至记录在 MSDN 中:http: //msdn.microsoft.com/en-us/library/zec56a0w.aspx)。

但是- 无论我怎么做(不带或不带 oa 密钥文件,带或不带“/delaysign”),生成的程序集的大小始终为 36,864 字节,并且在查看 DLL 的属性时没有“数字签名” " 选项卡(不用说 - DLL 未签名)。

我在这里想念什么?(... 帮助!...)