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

.net - 引用 COM 对象 ActiveD 或 MSXML2 时出现大量构建警告

将项目从 .NET 1.1 移动到 .NET 2.0 后,MsBuild 会针对某些 COM 对象发出大量警告。

测试示例代码(实际代码无关紧要,仅用于创建警告):

警告消息看起来像

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets:警告:运行时封送处理程序无法封送“ITypeLib.RemoteGetLibAttr”的至少一个参数。因此,此类参数将作为指针传递,并且可能需要不安全的代码来操作。

观察:

  • ActiveDs(11 个警告)和 MSXML2(54 个警告)会发生这种情况。
  • 我们自己的 COM 对象没有看到。
  • <Reference>.csproj 文件中的条目包含属性WrapperTool = "tlbimp"
  • 尽管有所有警告,但在运行的系统中没有发现任何问题。

知道如何摆脱警告吗?

0 投票
1 回答
5721 浏览

.net - 在 TLBIMP-ed dll 之后手动生成 ActiveX 包装器?

我有几个需要从 C# 项目访问的 ActiveX 组件。

我可以通过 Visual Studio 的添加引用对话框导入它们,该对话框还将自动生成包装器类。(即ABCLibAxABCLib

我知道我可以通过TLBIMP /primary在每个单独的 OCX 文件上运行来手动生成主互操作程序集,但我找不到生成 ActiveX 包装器的方法,除非我通过 Visual Studio 用户界面执行此操作。

是否有在 .NET SDK 中生成 ActiveX 包装器的命令行版本?

我想AxABCLib从手动从 TLBIMP 获得的 PIA 生成版本。(即设置命名空间、输出 dll 文件名等)有可能吗?

0 投票
3 回答
1881 浏览

c# - 将类型库导入为 C# 代码的工具

是否有将 COM 类型库导入/转换为 C# 代码而不是生成程序集的工具?TLBIMP 工具和 TypeLibaryConverter 类只生成程序集。

通过在生成的 Interop 程序集上运行 Reflector 并复制粘贴反汇编的源代码,我已经成功地翻录了 C#ComImport定义,但这通常需要在编译之前进行大量手动修补。

期望的目标是一个没有附属互操作 DLL 的单个 EXE,所以答案可能是使用 ILMerge 将互操作 DLL 有效地嵌入到 EXE 中。

我确信过去我会遇到这样的工具 - 但也许它梦想过它:-)

0 投票
1 回答
417 浏览

c++ - 将 dll 引用添加到托管 c++ 项目时出现编译器错误

我正在使用 VS 2008 并且在我的 C++ 项目中添加对托管 c++ 文件的 dll 引用时偶尔会出现编译器错误。我正在尝试添加对 dll 的引用,以便能够使用智能指针。 例如:#import items.tlb

问题是编译器在items.tlh内的零星地方崩溃,几乎就像删除了缺失的字节块一样,但是当我打开文件时,我找不到对上述错误的任何引用。

我多次尝试重建整个项目,在不同的机器上尝试过,但是虽然编译器错误不一致并且有时会一起消失,但重新重建有时会带来问题。有人告诉我,生成的.tlh文件的大小可能是一个原因,但它并不能真正解决我的问题或为我指明正确的方向。

有没有人经历过同样的症状?谢谢

0 投票
2 回答
1911 浏览

visual-studio - 在 Visual Studio 中引用 COM 程序集与通过 tlbimp.exe 转换 COM 程序集

当我通过将 COM 程序集 (dll) 作为参考添加到 Visual Studio 项目中时,我可以毫无问题地使用生成的等效公共语言运行时程序集。

但是,如果我尝试使用 tlbimp 将相同的 COM 程序集转换为公共语言运行时程序集,则会遇到各种问题。

有没有办法复制 Visual Studio 与 tlbimp 一起使用的设置?或者换句话说,有没有办法通过使用 tlbimp 来生成与 Visual Studio 相同的互操作类?

0 投票
1 回答
640 浏览

.net - COM 接口问题 - .NET

最近我正在阅读有关互操作编组的内容,但我仍然不明白一件事。为了使 .NET 程序集对 COM 可见,我需要使用 tlbexp 工具和/或 regasm 工具。为了使 COM 对 .NET 组件可见,我必须使用 tlbimp 工具——这一切对我来说都很清楚。

  1. 除此之外,我在互联网上看到了很多处理具有 guid 属性、IUnknown 和 IDispach 的 COM 接口的代码。

我的问题是所有这些与 COM 有什么关系——我需要使用它吗?我正在准备认证,但他们没有说任何关于接口、指南、IUnknown 等的信息……

我真的不喜欢留下不清楚的东西,所以如果有人可以向我解释一下,我将非常感激。

  1. 我还有一个关于从 COM(tlbimp 工具)导入的类型库的问题。从 COM 导入的类型库是否还需要在系统中注册 COM 对象?

亲切的问候PK

0 投票
1 回答
1984 浏览

com - 如何让 tlbimp 不为引用类型自动生成程序集?

我想使用 .NET SDK 中包含的 tlbimp.exe 工具从类型库创建互操作程序集。

我的问题是源类型库正在引用另一个我没有可用的库中的类型。如何让 tlbimp 不为引用类型自动生成程序集?

我收到以下错误:

使用进程监视器我得出的结论是找到了 GridEX20 库,但它引用了另一个未找到的库,并且当找不到该库时 tlbimp 报告错误。

0 投票
1 回答
2834 浏览

visual-studio-2008 - VS 2008 中的 Wrapper Assembly Key File 设置在哪里?

我正在尝试构建一个强命名的应用程序。它引用了我通过“添加引用”对话框添加的 COM 互操作库。已经有一段时间了,但我似乎记得在旧版本的 Visual Studio 中,有一个Wrapper Assembly Key File的项目设置。我似乎在 Visual Studio 2008 中找不到它?

0 投票
2 回答
2630 浏览

.net - 在 Visual Studio 中抑制 tlbimp 警告

在 Visual Studio C# 项目中,可以添加对 COM 库的引用。然后, Visual Studio 将在构建项目时使用tlbimp.exe生成互操作程序集。.csproj 文件中的引用如下所示:

但是,我在此处导入的 3rdparty 类型库会导致 tlbimp 发出一些警告。如何在 Visual Studio 中抑制这些警告?我试图将包装工具更改为

但这导致视觉工作室抱怨

遇到一个错误,阻止加载引用“TDAPIOLELib”。包装工具“tlbimp /silent”不是有效的包装工具。

0 投票
2 回答
12660 浏览

deployment - TLBIMP.EXE - 错误 TI0000 - *.dll 不是有效的类型库

在构建服务器上构建我们的项目时,编译失败并显示错误消息:

我们尝试通过 VS2005 命令提示符手动调用 TlbImp 命令,并出现相同的错误消息。

为了进行调查,我们尝试在虚拟机 (Vbox) 中创建一个干净的构建环境,然后在那里运行构建。一切顺利。

我们还尝试通过 VS2005 命令提示符调用相同的 TlbImp 命令,它成功了。

有了这个,我们假设 DLL 没有任何问题。你知道什么情况会导致这个问题吗?

编辑:发现问题,请参阅我的答案。;)