问题标签 [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.
dll - Oleview错误“错误加载类型库”?
类型库声明应用程序或动态链接库 (DLL) 公开的类、接口、常量和过程。类型库通常是程序文件中的资源;它也可以是扩展名为 .tlb 或 .olb 的独立二进制文件。
那么是否有可能某些 DLL 仍然公开接口而不被声明为 TypeLib。
实际上我正在尝试从 oleview 打开一个 dll 并显示错误消息“错误加载类型库”。
根据我的理解,如果我们有从 DLL 暴露的接口,那么它应该由 oleview 打开,否则它不能有暴露的接口或函数。
我们有 dll 暴露接口但仍然无法被 Oleview 查看的任何可能性。
c# - 为什么这个 C# 类库项目无法创建兼容 COM 的 DLL?
我已经下载了一个名为TreeViewAdv的 C# 类库,我需要在另一个项目中将其用作 COM DLL。
它构建成功(发布,而不是调试)。
- 使用“regasm”注册构建的 DLL 说“类型注册成功”
- 使用“gacutil”注册说“程序集成功添加到缓存”
在 C# 项目设置中:
- 应用程序 > 装配信息 >使装配 COM-Visible被选中
- 构建 >注册 COM 互操作已选中
但是,当我尝试通过“选择工具箱项目”对话框将此构建的 DLL 添加到 VS 时,它显示“XYZ.tlb 的自我注册失败”。
还有什么我必须配置的吗?为什么我不能在 VS 中使用这个 DLL?
c++ - 使用 tlb 文件的 COM 自动化
将我视为 Windows 环境和 COM 编程的新手。
我必须自动化应用程序(CANoe)访问。CANoe 将自己暴露为 COM 服务器并提供 CANoe.h 、 CANoe_i.c 和 CANoe.tlb 文件。任何人都可以指定如何编写 C++ 客户端,以访问应用程序的对象和功能。
另外,请指定如何从 C++ 访问 tlb 文件中的代码。
c++ - 在 COM 自动化中 #import tlb 文件时出现编译错误
我正在尝试在 VC++ 项目中#include 一个应用程序 tlb 文件。
在我的项目源文件中 #import "CANoe.tlb" 之后出现以下编译错误。-
- 未知字符'0x1'
- 语法错误:缺少 ';' 在标识符“A”之前
- 缺少类型说明符
- int 假定。注意:C++ 不支持默认整数
- '{' : 缺少函数头(旧式正式列表?)
请提出建议,如果我做错了。
此外,有没有办法验证 .tlb 文件内容并解决这些错误。是否可以在 tlb 文件中进行更正?如果是这样,我如何创建更新的 tlb
提前致谢
delphi - 第三方 COM DLL 的新版本 - 如何在 Delphi 中安装和保留旧版本?
我需要让我的 Delphi 程序使用新版本的第三方 DLL。我希望能够使用新版本,但如果需要,可以恢复到旧版本。
一些对象是应用程序中表单上的不可见对象。其他我在运行时实例化。
如何在维护现有版本的同时将新版本的 DLL 安装到 Delphi 中?我正在使用德尔福 2007。
c++ - 如何在 C++ 中以编程方式导入 tlb 文件?
目前我正在使用以下语句:
但我以编程方式获取文件夹路径。IE,"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"
我必须test.tlb
从驻留在变量中的这条路径加载,说folderpath
。我必须通过连接以编程方式导入 tlb folderpath+test.tlb
。我怎样才能做到这一点?
c# - 互操作程序集中的名称大写错误
我有一个带有类型库的 VC++ COM 组件。该组件的类型库声明了一个接口和一个协同类:
为了使用来自 C# 应用程序的组件,我添加了对 C# 项目的引用并生成了一个互操作程序集。
在 Visual Studio 2003 的对象浏览器中,我看到互操作包含:
很明显,由于某种原因,类的名称和接口的大小写不同。这不会发生在同一类型库中声明的其他 20 多个接口 - 因为它们ISomething
对应于Something
and SomethingClass
。
我查看了项目的 .idl 文件 - 标识符Workflow
未在其他任何地方使用。
这种奇怪行为的原因是什么?如何解决?
.net - 任何听说过 Accessibility_TLB 的人
我一直在努力将我的一个程序集转换为可以通过 Delphi 使用。我能够将程序集转换为 PAS 文件并在我的 delphi 应用程序中调用该方法。但是我遇到了一个问题,我的 PAS 文件要求我能够找到并添加 System_Windows_Forms_TLB。但是那个文件使用了 Accessibility_TLB,我不知道那在哪里?有谁知道那在哪里或者我在这里做错了什么?抱歉,我完全没有处理 COM 的经验。
.net - COM 互操作 (CCW) 中的重载 - IDispatch 名称包括后缀(_2、_3 等)
我有一个包含几个类的托管程序集,这些类具有重载方法。我通过以下方式将程序集公开给 COM/IDispatch 调用者
..并在程序集本身上设置正确的 Guid。我没有为 COM 互操作定义显式接口。这一切都是动态完成的。我regasm.exe /codebase
在托管 DLL 上运行,它为 COM 互操作注册它。
当我运行 OleView 时,我可以看到程序集中各个类的 ProgId。但是,浏览这些 ProgId 并展开 IDispatch 节点,这些类没有 TypeLib 信息。
即使这样,我也可以从脚本调用接受零参数的方法或接受一个参数的方法。如果还有一个接受多个参数的重载,我不能按名称调用该方法。我一直得到的错误是
由此我了解到 COM/IDispatch 客户端无法正确解析通过 COM 互操作公开的对象上的重载方法。
然后我加了
...到每个有问题的班级。在regasm.exe
DLL 之后,我可以在 IDispatch 节点下看到每个方法的类型库信息。
我发现重载的方法会自动获得一个包含附加后缀的名称。MethodX 将在自动生成的 typelib 程序集中公开重载为 MethodX、MethodX_2、MethodX_3 等。
而且我发现通过引用带有这些后缀的方法名称,我可以调用重载方法,尽管不是使用通用名称。
更有趣的是,如果我随后[ClassInterface(ClassInterfaceType.AutoDual)]
从类中删除 ,我仍然可以以这种方式调用重载方法,从而避免 Wrong number of arguments or invalid property assignment
错误。
我的问题是:这种行为 - 将数字后缀附加到成员名称 - 稳定吗?记录在案?可信?
delphi - 是否可以向类型库添加额外的 GUID?
我有一个描述一些接口的类型库。由于其中一些接口用作类别,因此我想将类别 ID 添加到类型库中。所以问题是:
a) 如何在 Delphi (2007 及更高版本) 中做到这一点?
或作为替代
b) 是否可以且建议将接口 GUID 用于 CATID?