【发布时间】:2010-04-23 11:19:09
【问题描述】:
首先,我是 Delphi 和 COM 的新手,但我应该在 Delphi 中构建 COM 应用程序。我在网上看了很多文章和笔记,但是我还是不太清楚Delphi中的COM和COM。
我的来源 - http://www.everfall.com/paste/id.php?wisdn8hyhzkt(大约 80 行)。
我尝试创建一个 COM 接口和 Impl 类 - 如果我从 Delphi 调用接口方法(我通过 TestClient.Create 创建一个 impl 对象),它可以工作,但如果我尝试从外部世界创建一个对象(从 Java ,通过 com4j)我的应用程序崩溃,出现以下异常:
Project Kernel.exe raised exception class $C0000005 with
message 'access violation at 0x00000002: read of address 0x00000002'.
如果我在 QueryInterface 中设置断点 - 它会中断,但是当我从函数中出来时 - 所有崩溃。
我做错了什么?我还缺少什么?我可以/应该阅读关于 COM(在 Delphi 中)的哪些内容以避免此类愚蠢的问题?
【问题讨论】:
-
如果我在 QueryInterface 中取消注释代码 - 没有访问冲突,但 com4j 说不支持该接口。
-
你能给我们一份Java端的代码清单吗?
-
抱歉,现在不行。我家里没有项目。它主要由 com2j 自动生成,并且仅包含 CoCreateInstance (CLSID)。
-
嗨,再次生成 java 代码:everfall.com/paste/id.php?qyvbz6upy56b
标签: delphi com queryinterface