问题标签 [typelib]

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

c# - 如何从 C# 读取非托管代码的 TLB(类型库)?

如何在 C# 中解析 TLB(非托管 COM 服务器)中的非托管代码?

0 投票
4 回答
1538 浏览

com - 如果我在 VB6 项目中使用类型库 (.tlb),是否需要将其与 .exe 一起分发?

如果我在 VB6 项目中使用类型库,我是否需要在目标计算机上使用已编译的 exe 分发 .tlb 文件(甚至可能注册它?)?

0 投票
1 回答
621 浏览

c# - 如何在 C# 中从 TLB(类型库)访问 COM vtable 并访问其条目?

我需要访问 COM vtable,其中包含在 C# 中的某些特定接口下暴露给外界的那些函数的条目。

我已经访问并迭代了 TLB 中包含的类型,LoadTypeLib并使用ITypeInfo.

现在我只需要一一访问 COM 接口的 vtable 中的那些方法,并且需要在 RUNTIME 时一一调用它们。

我需要 COM vtable 地址及其索引条目(即函数地址)。

0 投票
1 回答
317 浏览

c# - 为什么在获取 COM 函数地址时发生异常?

我通过加载类型库 (TLB) 并使用和迭代类型来获取 COM 函数的ITypeLib地址ITypeInfo。调用AddressOfMemberITypeInfo 的函数后,我面临以下异常:

System.Runtime.InteropServices.COMException (0x800288BD):操作的模块类型错误。(来自 HRESULT 的异常:0x800288BD (TYPE_E_BADMODULEKIND))在 System.Runtime.InteropServices.ComTypes.ITypeInfo.AddressOfMember(Int32 memid,INVOKEKIND invKind,IntPtr& ppv)。

我该如何摆脱这个异常?

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

c# - 必须注册 .tlb 文件?

我有一个 com interop c++​​ dll,它通过 c# 中生成的 .tlb 文件在 c++ 中加载。当我在我的计算机上运行时,它工作正常,但是当我在刚刚格式化的计算机上运行时,它会给出:

我是否必须为 .tlb 文件或其 dll 在系统中注册做一些事情?关于 regasm.exe 的东西?

如果是这样,是否可以只下载regasm.exe并使用它?

0 投票
1 回答
563 浏览

c# - 在 Windows 7 Pro 32 位中生成 .tlb 文件

我有一个 C++ DLL,它可以导入在 C# 项目中生成的 .tlb 文件。C++ DLL 是一个包装 DLL,其中包含调用相应 C# 函数的函数。

当我在构建项目的计算机上调用 C++ 函数时,一切正常。但是,当我将 DLL 和生成的 tlb 复制到另一台具有相同版本的 Windows 和已安装程序的计算机上并调用 C++ 函数时,它会因 COM 错误而中断。但是,在新计算机上重新编译项目后,一切都会再次运行。

我已经检查了这两个项目的“在所有计算机上工作”,但这一直在发生。我还需要做什么才能使 DLL 在所有计算机上工作?

0 投票
1 回答
683 浏览

interop - Why exception occured at LoadTypeLibEx System.ArgumentException: Value does not fall within the expected range?

I am loading type library in C++/CLI. In C# its loading successfully but it's giving again and again following exception in managed C++/CLI.

exception occured at LoadTypeLibEx System.ArgumentException: Value does not fall within the expected range

at LoadTypeLib(String strTypeLibName, ITypeLib typeLib)

Here's a PInvoke Signature:

My code:

I am stuck here. Kindly give me way around to get rid of this exception.

Regards Usman

0 投票
1 回答
129 浏览

visual-c++ - 如何从类型库中获取函数的调用约定?

无论是使用 stdcall、cdecl、winapi 还是其他任何类型的库,如何在运行时获取调用约定?

0 投票
1 回答
89 浏览

com - 获取 Win32 Dll 中的类型

我想在普通的 Win32.dll 中获取类型和详细信息,就像我们在 COM 中一样。在 COM 中,idl 中嵌入的所有内容都会导致 TLB,MSFT 公开 APIS,我们可以在其中提取类型。

我需要在 Win32 中定义的类型以及该类型的所有详细信息(例如成员及其类型)。解析 PE 文件并查找导出的表只给出导出的函数,我希望在其中定义所有自定义类型(Win32 接口、类和成员详细信息与类型)。