【发布时间】:2014-06-20 09:10:35
【问题描述】:
我在 Delphi 中开发了一个 COM 库。当我尝试在 Visual Studio 项目中“添加引用”时,VS 崩溃。我尝试通过 tlbimp.exe 构建互操作程序集,但失败了:
TlbImp : 错误 TI1000 : 类型库导入器遇到一个 意外异常:System.AccessViolationException - 试图 读或写受保护的内存。这通常表明其他 内存已损坏。
有趣的是,当我向 Web 应用程序(或网站)项目“添加引用”时,它成功生成了 Interop dll 并添加了引用。
了解 Web 应用程序项目如何使用 tlbimp.exe 对我来说很重要,因为我想自定义互操作生成。
【问题讨论】:
-
试试开源的TlbImp,可以调试:clrinterop.codeplex.com/releases/view/17579
-
@Noseratio 这是个好主意。当 TlbImp 尝试使用函数 DISPID 检索函数描述时,我调试了代码并发现了访问冲突。我没有足够的时间准确地发现问题,但可能是 TlbImp 中的错误。
-
我想你能做的最好的事情(除了reporting a bug)是尝试改变你的Delphi组件的界面,所以它不会扰乱TlbImp。
-
@Noseratio 我将在收集到足够的信息来重现该错误后立即报告该错误。该问题仅针对一个 CoClass。其他接口和 CoClass 都很好。
标签: c# delphi com com-interop tlbimp