3

我在 Delphi 中开发了一个 COM 库。当我尝试在 Visual Studio 项目中“添加引用”时,VS 崩溃。我试图通过 tlbimp.exe 构建互操作程序集,但失败了:

TlbImp:错误 TI1000:类型库导入器遇到意外异常:System.AccessViolationException - 试图读取或写入受保护的内存。这通常表明其他内存已损坏。

有趣的是,当我向 Web 应用程序(或网站)项目“添加引用”时,它成功生成了 Interop dll 并添加了引用。

了解 Web 应用程序项目如何使用 tlbimp.exe 对我来说很重要,因为我想自定义互操作生成。

4

1 回答 1

1

您的 Delphi 代码中很可能有错误。您可以像这样在 Delphi 中调试 COM 库:

在此处输入图像描述 选择运行-> 参数...

在此处输入图像描述

(不要介意这说的是 project28.exe;它对 Projectx.dll 的工作方式相同)

我通常使用 COM 为 Excel 开发插件。
在这种情况下,我的主机应用程序是Excel.exe.

输入此信息后,您就可以访问run图书馆了。
当您这样做时,Delphi 将启动主机应用程序并等待它以某种方式调用您的库。
如果您设置了任何断点,Delphi 将暂停操作并允许您进行调试。

因为您知道在 C# 代码中调用了哪些函数,所以应该不难看出在哪里设置第一个断点。

Delphi 也会在任何异常情况下中断。

于 2014-05-03T20:53:05.693 回答