问题标签 [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.
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 文件。
com - 如何为 OLE 自动化编写类库?
我有 Excel 插件,我添加了很多类模块,现在它非常庞大。我想将其转换为类型库或 COM 包,以便我可以将其重新用于 MS Office 套件中的其他应用程序。
我将加载项作为类库项目移植到 Visual Studio,但 Excel 自动化无法识别已编译的 .dll 文件中的类。直觉上,我认为我的代码中需要一个清单、一个接口或类似的东西。
为了公开类的方法和属性以在 OLE 自动化中使用,我需要知道什么?
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>
方式处理(根据文档):
- 搜索 %PATH% 的目录
- 搜索 %LIB% 的目录
- 搜索“其他包含路径”(/I 编译器选项)
编译 libC 时,我可以看到 cl.exe 清楚地能够在可执行路径上找到 libA.dll(使用 Filemon.exe)
VC 错误 C4772: #import of typelib 与另一个依赖项
但是,仍然找不到 libA 命名空间,并且所有对 libA 类型的引用都替换为__missing_type__
(编辑)同时,我发现问题仅在使用调试 dll 时出现。
以前有人见过这个问题吗?并解决了?
delphi - 测试 Delphi DLL 崩溃 VB6 IDE
我第一次尝试在 Delphi 中编写 DLL。到现在为止还挺好。通过使用类型库,我能够毫无困难地在 DLL 中传递 Widestrings 和从 DLL 传递 Widestrings。
目前令人好奇的是,我使用 VB6 作为测试平台,每次我在 IDE 中运行测试时,程序都会运行,然后 IDE 进程突然从内存中消失 - 没有错误消息,什么都没有。如果我单步执行代码,一切正常,直到我执行最后一行,然后 IDE 就会消失。
相比之下,当我将测试编译为 EXE 时,程序运行到最后,没有错误消息等。
以前有没有人遇到过这个问题,是否有一个明显的解决方案让我眼前一亮?
下面的源代码,以防万一:
- 项目
- 单元
-- 类型库
我将 WideString 的声明移到我声明它的函数之外,期望这会将变量的生命周期增加到比foo
函数的生命周期更长。它没有任何区别。
同样,我在 VB6 中注释掉了对该foo
函数的调用。那也没什么区别。不管我做什么,VB6 IDE 在最后一行代码执行后就死掉了。
除了指向局部变量的指针之外,还有其他原因。但是什么?
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 重新实现的上下文中编写的。
variant - 如何使用 EuCOM 在 Euphoria 中创建 BSTR 的变体数组?
到目前为止,我已经弄清楚了如何使用 Typelib 将 Unicode 字符串 bSTR 传入和传出 Euphoria DLL。到目前为止,我无法弄清楚的是如何创建和传回 BSTR 数组。
到目前为止我拥有的代码(以及include
用于 EuCOM 本身和部分 Win32lib 的 s):
类型库的一部分是:
VB6中的测试代码是:
到目前为止,我设法得到的只是来自 DLL 的错误“0”。有任何想法吗?任何人?
com - 何时更改类型库上的 GUID
我知道当您在 COM 接口中添加/更改/删除方法时,您应该更改接口/coclass GUID,但是类型库呢。什么时候应该更改类型库的 GUID?如果类型库中的 GUID 已更改,您会更改它吗?或者您是否应该仅在类型库中没有自己的 GUID 的内容发生更改时更改它。
delphi - 如何在 Delphi 的类型库编辑器中进行复制和粘贴?
帮助
我正忙于对 Datasnap 项目中的类型库进行更改。
如何在类型库编辑器中复制和粘贴文本?
Ps 我正在使用 BDS2006
编辑 1
有没有办法在不使用 TLB 编辑器的情况下更改类型库?
编辑 2
有没有办法在类型库编辑器的“属性”和“用户”屏幕中进行复制和粘贴?
delphi - 在存储库 (SVN) 中包含 Delphi 类型库?
在 SVN 中保存 Delphi 类型库的最佳方法是什么。
每次编译应用程序时文件都会更改
该文件未以可读的 AscII 格式保存
很难弄清楚从一个版本到下一个版本所做的更改
当多人更改文件时,这是一个主要问题
问题:
1) 是否应该在版本控制中保存导出的“IDL”文件?
2) 可以将“IDL”转换为 Delphi 类型库吗?如果可以,怎么办?
3) 使用 Delphi 类型库时的最佳实践是什么?
4)摆脱Delphi2009 datasnap项目中的类型库有多容易?
ps 我正在使用 BDS2006
delphi - Delphi 2009 COM/ActiveX 类型库支持稳定性
提到TLB和维护问题...
我对使用Delphi 2009中新的 COM/ActiveX 类型库支持的人们(经常)提出的问题:
实现的稳定性如何?
特别是,我感兴趣的是:添加/删除类,更改 GUID,重命名方法/属性,重新排序方法/属性,大型类型库(50 多个类),...
它是像 Delphi 2007(一场噩梦)还是 Delphi 7(相当不错,但有时您必须从 SVN 恢复 TLB 文件)或超稳定(如...呃,....记得任何德尔福版本)?
编辑:是的,当然,文本 RIDL 是一个好主意,但我的问题是: TLB 支持
的(新)实现是否稳定(尤其是 RIDL 文件与可视化 TLB 编辑器和实现类的同步)我上面描述的任务)。