【GUIライブラリ】wxWindowsでのひょーん
at TECH
351:灰 ◆v/.u/aNe9w
03/07/20 00:03
bcc32 で samples/bombs のデバッグ版が動かない理由がわかりますた……。
理由:
wxWindows では実行時型情報を提供する為の仕組みとして、
wxClassInfo クラスと、マクロ DECLARE_DYNAMIC_CLASS(foo) と
IMPLEMENT_DYNAMIC_CLASS(foo, bar) を提供していまつ。
URLリンク(www.wxwindows.org)
このマクロはそれぞれ、
static wxClassInfo sm_classなんちゃら;
virtual wxClassInfo *GetClassInfo() const { return &MainFrame::sm_classなんちゃら; }
と
wxObject* wxConstructorForなんちゃら() { return new なんちゃら; }
wxClassInfo MainFrame::sm_classなんちゃら(
"なんちゃら", "wxFrame", 0
, (int) sizeof(MainFrame), (wxObjectConstructorFn) wxConstructorForなんちゃら
);
に展開されます。
んで、wxClassInfo はコンストラクタ(src/common/object.cpp)で
各クラス内のスタティックな sm_classなんちゃら のポインタをチェインとして
登録するような仕組みになってます。
んで、wxWindows::msw のデバッグを有効にしている場合、
内部の WinMain にあたる wxEntry の最初の方で wxClassInfo のチェインをハッシュテーブルに登録。
更に、そのテーブルを元にデータの正当性(依存関係)のチェックを行ってます。
bcc32 は、その正当性チェックの部分で弾かれてしまっています。
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5132日前に更新/338 KB
担当:undef