Nic*_*las 5 c++ windows dll dllimport dllexport
给定具有以下类的DLL:
#define DLLAPI __declspec(...)
class DLLAPI Base
{
public:
virtual void B();
};
class Derived : public Base
{
public:
virtual void B();
virtual void D();
};
Run Code Online (Sandbox Code Playgroud)
即使"DLLAPI"关键字未应用于类定义(至少,不是直接),我的"Derived"类是否可以在dll之外显示?
"D()"功能是否可见?
谢谢
您的 DLL 不会导出类 Derived。类不继承导出。也将 DLLAPI 添加到其中。
另请注意,类成员默认为私有可访问性,因此您的任何方法都不应可访问。但是,我确实看到 Base::B() 在我的测试中被导出。使用 DLL 的代码中的 C++ 标头会标记错误,但我想知道您是否在那里调整了标头,是否可以欺骗它。
无论如何,如果你在你的 DLL 中实例化了一个 Derived(通过另一个入口点),虚拟表应该仍然可以工作,所以如果你这样做了:
Base* b = getTheDerived(); b->B();
Run Code Online (Sandbox Code Playgroud)
你会调用 Derived::B()。