gpt4 book ai didi

.net - 在 Delphi 中通过 COM 对象使用 .Net 类有时会挂起

转载 作者:行者123 更新时间:2023-12-03 18:44:28 26 4
gpt4 key购买 nike

我有一组用 Delphi.NET (.NET 1.1) 编写的库,我想在我的 Win32 (Delphi) 应用程序中使用它们。对于与性能相关的问题,我决定遵循 COM 路线。

有时,在重建 DLL 后,当我尝试实例化通过 COM 公开的对象时,Win32 应用程序在 CreateComObject 处挂起。称呼。我怎么解决这个问题?

为了通过 COM 公开 Delphi.NET 库,我在每个类减速上方添加以下属性:

[Comvisible(true)] 
[Guid('some guid')]
[ClassInterface(ClassInterfaceType.AutoDual)]

编译DLL后,我生成了 TLB.pas文件,此文件包含 DLL 中所有公共(public)和 COM 可见类和接口(interface)的定义。这个文件允许我更容易地在我的 Delphi Win32 应用程序中使用 COM 对象。最后,我注册了 .dll.tlb使用 regasm 飞行.

我尝试注销并运行引用 DLL 的 Win32 应用程序;我预计会收到运行时错误,但应用程序再次卡在 CreateComObject()称呼。

我也尝试过注销和注册 DLL,但没有任何运气。

p.s.我正在使用 BDS 2006

最佳答案

我对 COM 的体验很复杂; COM 有时很难稳定下来,所以如果不需要,我经常采取另一条路线。

在这种情况下,您可以尝试使用反向 P/Invoke 绕过 COM。

这里有几篇文章可以帮助你:

http://blogs.codegear.com/timjarvis/2006/11/10/29270
http://www.blong.com/Conferences/BorConUK2002/Interop1/Win32AndDotNetInterop.htm
http://www.blong.com/Conferences/BorCon2004/Interop1/Win32AndDotNetInterop.htm

当您在 "Delphi Inverse PInvoke" 上搜索时,您可以获得更多点击但以上是最好的文章。

亲切的问候,

杰伦·普莱默斯

关于.net - 在 Delphi 中通过 COM 对象使用 .Net 类有时会挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/460486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com