0
|
dummzeuch Stijn Sanders · 技术社区 · 14 年前 |
![]() |
1
2
是的,如果都是德尔菲的话,那就可以了。如果接口发生变化,您必须确保编译这两个函数。C++编译器看起来是兼容的,但是要注意其他编译器。 通常,引用计数达到零会导致对象的创建者释放它。在不同的内存管理器中没有问题。 可能的问题是,您的dll仍然通过接口引用一个对象,并调用iunknown.release以在不再需要时降低引用计数。如果由于某种原因,引用的对象已经被冻结,您将得到AVS。关闭应用程序之前,请确保通过引用删除对对象的所有引用(双击全局变量)。 fastmm的调试选项可能会帮助您找到问题所在。 |
![]() |
2
0
在DLL之间传递接口没有任何问题。毕竟,每次使用来自WindowsAPI的接口时,都是这样。因此,你的问题就更深了。 缺少guid是一个需要解决的简单问题。只需按ctrl+shift+g,就可以使用com了。Delphi中所有与界面相关的东西在界面有guid时变得更容易,即使你不使用com。 如果您的dll是一个COM dll,那么主机程序将能够检查卸载该dll是否安全。Delphi的COM框架自动跟踪该dll中是否还有活动的对象。当主机希望卸载dll时,它会询问dll是否安全。
您的对象应该是COM对象。宿主程序将使用OS标准创建对象的实例
|
![]() |
Alec · 如何检测单击TListView中的复选框 7 年前 |
![]() |
delphirules · 关闭应用程序实例,但不关闭当前实例 7 年前 |
![]() |
rossmcm · Delphi2007-“要忽略的异常”列表的编程操作 11 年前 |
![]() |
Obl Tobl · 在Delphi中更改引发异常的图标 12 年前 |