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

delphi - Delphi 和 COM:TLB 和维护问题

在我工作的公司,我们所有的GUI都是用C#开发的,但是应用内核主要是用Delphi 5开发的(由于历史原因),很多组件都是用COM+做的。与这种非常具体的应用程序相关,我有两个问题:

  • 在 Delphi 和/或 COM 方面有经验的人,你有什么办法可以使用有缺陷的 TLB 界面吗?一些错误是:编辑大型 TLB 期间 IDE 崩溃、方法 ID 丢失、TLB 损坏等。在这里,我们还没有找到任何好的解决方案。实际上,我们尝试升级新的 2007 版本。但是新的 IDE TLB 接口与我们之前发现的 bug 相同。

  • 您如何控制 TLB 版本?TLB 文件是二进制格式,解决冲突非常困难。我们尝试将接口描述导出到 IDL 并提交到 CVS,但我们没有找到任何使用 Delphi 从 IDL 生成 TLB 的好方法。另外,微软提供的 MIDL 工具没有正确解析我们从 delphi 导出的 IDL 文件。

0 投票
2 回答
754 浏览

com - 如何为 OLE 自动化编写类库?

我有 Excel 插件,我添加了很多类模块,现在它非常庞大。我想将其转换为类型库或 COM 包,以便我可以将其重新用于 MS Office 套件中的其他应用程序。

我将加载项作为类库项目移植到 Visual Studio,但 Excel 自动化无法识别已编译的 .dll 文件中的类。直觉上,我认为我的代码中需要一个清单、一个接口或类似的东西。

为了公开类的方法和属性以在 OLE 自动化中使用,我需要知道什么?

0 投票
4 回答
1019 浏览

c++ - 不能从调试 dll 很好地导入间接 Typelib

使用 VC2005,我有 3 个项目要构建:

  • libA(包含一个类型库,生成 libA.dll):IDL 有一行library libA { ...
  • libB(包含一个导入libA的typelib,结果是libB.dll):IDL有一行 importlib( "libA " );
  • libC(导入 libB):源文件之一包含#import <libB.dll>

由编译器按以下#import <libB.dll>方式处理(根据文档):

  1. 搜索 %PATH% 的目录
  2. 搜索 %LIB% 的目录
  3. 搜索“其他包含路径”(/I 编译器选项)

编译 libC 时,我可以看到 cl.exe 清楚地能够在可执行路径上找到 libA.dll(使用 Filemon.exe)

VC 错误 C4772: #import of typelib 与另一个依赖项

但是,仍然找不到 libA 命名空间,并且所有对 libA 类型的引用都替换为__missing_type__

(编辑)同时,我发现问题仅在使用调试 dll 时出现。

以前有人见过这个问题吗?并解决了?

0 投票
5 回答
2431 浏览

delphi - 测试 Delphi DLL 崩溃 VB6 IDE

我第一次尝试在 Delphi 中编写 DLL。到现在为止还挺好。通过使用类型库,我能够毫无困难地在 DLL 中传递 Widestrings 和从 DLL 传递 Widestrings。

目前令人好奇的是,我使用 VB6 作为测试平台,每次我在 IDE 中运行测试时,程序都会运行,然后 IDE 进程突然从内存中消失 - 没有错误消息,什么都没有。如果我单步执行代码,一切正常,直到我执行最后一行,然后 IDE 就会消失。

相比之下,当我将测试编译为 EXE 时,程序运行到最后,没有错误消息等。

以前有没有人遇到过这个问题,是否有一个明显的解决方案让我眼前一亮?

下面的源代码,以防万一:

- 项目

- 单元

-- 类型库


我将 WideString 的声明移到我声明它的函数之外,期望这会将变量的生命周期增加到比foo函数的生命周期更长。它没有任何区别。

同样,我在 VB6 中注释掉了对该foo函数的调用。那也没什么区别。不管我做什么,VB6 IDE 在最​​后一行代码执行后就死掉了。

除了指向局部变量的指针之外,还有其他原因。但是什么?

0 投票
2 回答
1110 浏览

dll - 哪个“更好”:带有 Typelib 的 COM DLL 或标准 DLL?

我将“更好”放在引号中,因为这是一个定性问题。几年来我一直在编写 COM DLL,直到最近才发现并成功使用了带有 Typelib 概念的标准 DLL。

使用 COM DLL 代替 DLL+Typelib 是否有任何令人信服的理由?当然,你不能用 DLL+Typelib 做 DCOM,但这是唯一的原因吗?

编辑我已经用 Visual C/C++ 6、Compaq Visual Fortran、Delphi、Visual BASIC 6、ActiveState Perl 和其他一些语言编写了 COM DLL。我用 Visual C/C++ 6、Delphi、Ada 和其他一些语言编写了标准 DLL。我已经为我自己的一些标准 DLL 以及第三方 DLL 编写了类型库。该问题最初是在 VB6 原件的 Delphi DLL+Typelib 重新实现的上下文中编写的。

0 投票
3 回答
1342 浏览

variant - 如何使用 EuCOM 在 Euphoria 中创建 BSTR 的变体数组?

到目前为止,我已经弄清楚了如何使用 Typelib 将 Unicode 字符串 bSTR 传入和传出 Euphoria DLL。到目前为止,我无法弄清楚的是如何创建和传回 BSTR 数组。

到目前为止我拥有的代码(以及include用于 EuCOM 本身和部分 Win32lib 的 s):

类型库的一部分是:

VB6中的测试代码是:

到目前为止,我设法得到的只是来自 DLL 的错误“0”。有任何想法吗?任何人?

0 投票
2 回答
2232 浏览

com - 何时更改类型库上的 GUID

我知道当您在 COM 接口中添加/更改/删除方法时,您应该更改接口/coclass GUID,但是类型库呢。什么时候应该更改类型库的 GUID?如果类型库中的 GUID 已更改,您会更改它吗?或者您是否应该仅在类型库中没有自己的 GUID 的内容发生更改时更改它。

0 投票
1 回答
472 浏览

delphi - 如何在 Delphi 的类型库编辑器中进行复制和粘贴?

帮助

我正忙于对 Datasnap 项目中的类型库进行更改。

如何在类型库编辑器中复制和粘贴文本?

Ps 我正在使用 BDS2006

编辑 1

有没有办法在不使用 TLB 编辑器的情况下更改类型库?

编辑 2

有没有办法在类型库编辑器的“属性”和“用户”屏幕中进行复制和粘贴?

0 投票
3 回答
1663 浏览

delphi - 在存储库 (SVN) 中包含 Delphi 类型库?

在 SVN 中保存 Delphi 类型库的最佳方法是什么。

每次编译应用程序时文件都会更改

该文件未以可读的 AscII 格式保存

很难弄清楚从一个版本到下一个版本所做的更改

当多人更改文件时,这是一个主要问题

问题:

1) 是否应该在版本控制中保存导出的“IDL”文件?

2) 可以将“IDL”转换为 Delphi 类型库吗?如果可以,怎么办?

3) 使用 Delphi 类型库时的最佳实践是什么?

4)摆脱Delphi2009 datasnap项目中的类型库有多容易?

ps 我正在使用 BDS2006

0 投票
3 回答
2343 浏览

delphi - Delphi 2009 COM/ActiveX 类型库支持稳定性

提到TLB和维护问题...

我对使用Delphi 2009中新的 COM/ActiveX 类型库支持的人们(经常)提出的问题: 实现的稳定性如何?

特别是,我感兴趣的是:添加/删除类,更改 GUID,重命名方法/属性,重新排序方法/属性,大型类型库(50 多个类),...

它是像 Delphi 2007(一场噩梦)还是 Delphi 7(相当不错,但有时您必须从 SVN 恢复 TLB 文件)或超稳定(如...呃,....记得任何德尔福版本)?

编辑:是的,当然,文本 RIDL 是一个好主意,但我的问题是: TLB 支持
的(新)实现是否稳定(尤其是 RIDL 文件与可视化 TLB 编辑器和实现类的同步)我上面描述的任务)。