Windows プロジェクトでは、インターフェイス クラスを定義します。
class Interface {
public:
virtual ~Interface() { }
virtual void func() = 0;
};
およびファクトリ関数
__declspec(dllexport) Interface *construct();
DLL内。もちろんInterface
、DLL 内には具体的な特殊化がありますが、エクスポートはしません。それでも、DLL の外部で使用できます。これはどのように作動しますか?vftable
によって構築されるインスタンスのconstruct()
は、DLL によってエクスポートされない関数を対象とする関数ポインタで構成されます。このアプローチは受け入れられますか、それとも多かれ少なかれハックですか?