(Windowsアプリの)プラグインのフレームワーク作ろうとしたら頭こんがらがってきた
本体アプリから呼ばれる部分のパッケージ(Base)は一番安定している筈。
で、プラグイン固有機能を実装するパッケージ(Derived)はBaseに依存している。
ここまではいい。

困ってるのは、
「Base内にあるDLLのエントリポイントでDerivedに属するクラスを生成するのはADP違反じゃないの?」
という点。(ADPってパッケージの依存関係を循環させんなってやつね)

Base内のEntryPoint.cpp(仮名)でonLoadが最初に呼ばれるとして、擬似コードがこんな感じ。

BOOL __cdecl onLoad( char *path )
{
    gPlugin = new DerivedPlugin( path );
    return gPlugin->onLoad();
}

別のプラグイン作成でBaseを流用したとき、毎回この関数を修正するのは変な気がするんだけど…。
上手く説明出来てなかったらすんません。