2011-09-22 61 views
1

我有一个应用程序和一个DLL,包括书面在Delphi 2006使含有重写虚拟方法的类,以一个dll

我有从基类下降并改变了几个虚拟方法的类。

该类通过导出的方法传递给DLL,导出的方法只知道基类。我从DLL中调用类中的方法,重写的方法不会被调用。

有什么我需要做的,让这个工作?是不是可能?

+3

第一个问题是:你为什么使用DLL而不是Package/BPL? –

+0

我原本没有编写DLL或应用程序,但我需要将类传入它。 –

+0

请显示无效的实际代码。 –

回答

5

您不能在一个模块中创建一个对象并在其他模块中调用其方法。按照模块我的意思是.exe/.dll。

如果你想跨越这样的边界,那么你需要使用包,COM或免费函数。软件包看起来很诱人,但将您绑定到系统中的所有软件包使用相同的编译器。如果这对你没有限制,那就继续使用包。否则使用COM或免费功能。

+0

你是什么意思的免费功能? –

+0

我的意思是不属于一个类的功能。如果您从DLL导入,则无法在边界的一侧创建对象并在另一侧调用其方法。 –

+0

是的,您可以通过DLL边界调用调用类的方法,尤其是因为EXE和DLL都使用相同的编译器编写。不过,更好的选择是使用Interface而不是基类。 –

相关问题