将包含重写虚拟方法的类传递给 dll
我有一个应用程序和一个 dll,都是用 Delphi 2006 编写的。
我有一个从基类派生的类,并重写了几个虚拟方法。
该类通过导出方法传递给 DLL,导出方法只知道基类。我从 DLL 中调用类上的方法,但不会调用重写的方法。
我需要做些什么才能让它发挥作用吗?难道这根本不可能吗?
I have an application and a dll, both written in Delphi 2006.
I have an class that descends from a base class and overrides several virtual methods.
The class is passed to the DLL via an exported method, the exported method only knows about the base class. I call the methods on the class from within the DLL the overridden methods are not invoked.
Is there something I need to do to get this to work? is is it simply not possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您无法在一个模块中创建对象并在不同的模块中调用其方法。我所说的模块是指.exe/.dll。
如果你想像这样跨越界限,那么你需要使用包、COM 或自由函数。包看起来很诱人,但你必须对系统中的所有包使用相同的编译器。如果这对您没有限制,那么请继续使用软件包。否则使用 COM 或自由函数。
You can't create an object in one module and call its methods in a different module. By module I mean .exe/.dll.
If you wish to cross boundaries like this, then you need to use packages, COM or free functions. Packages look alluring but bind you into using the same compiler for all packages in the system. If that is not restrictive to you then go ahead and use packages. Otherwise use COM or free functions.