C++::当たり前だけど

メインプログラムがDLLをプラグインのように扱うプログラムで、プラグイン側がメイン側の機能を使うために安易にオブジェクトのポインタを引き渡すようにしたらプラグインDLLのリンクの時に未解決ですよ〜と怒られた。
ちょっと考えなくても当たり前のことなんだけど(DLLにはオブジェクトのヘッダしか含まれないため)こんなことにビルドするまで気づかない俺にちょっと腹立つ。

あ、ちなみにこの場合の正解はDLLで必要な操作を新しくインターフェースにまとめて、それをオブジェクトに継承させるだけですんで。間違いに気づいてしまえば悩まず解決できるのに致命的な設計バグ・・・オワットル。

class MainClass : public Interface {
public:
    void NeedMethod(){ ... }
};
class Interface {
public:
    virtual void NeedMethod()=0;
};
class PluginClass {
public:
    void PluginMethod(Interface &mainObj);
};

上二つをメイン側、下二つをプラグイン側に入れるのです。