アプリケーションの初期化処理でエラーが発生しました。

ということで、今作っているアプリに C++/CLI のプロジェクトを追加し、libやらを設定した後に起動すると「アプリケーションの初期化処理でエラーが発生しました。エラーコード 0xC0000005」というのが発生。

起動時のdll読み込み処理などを見てみると、エラー発生直前と思えるのに comctl32.dll があり、それが SxS で入るdllだったのでバージョン違いか何かか?と想像。
ネットをたどると sxstrace.exe を使うと良いというのがあったので探してみると・・・無い。無い。無い。


なんと Vista 以降にしか入っていないと言うではないか(開発はXP SP3)。

しょうが無いので Vista なら sxstrace で何か解るかと思って実験してみると今度は出ない。

意味がわからない・・・

ということで、あきらめて SVN から新規に co して同等のを作ってみると今度は起動できる。

いったい何が悪かったのか両方を見比べてみると。dllのロード順が違う。同じソリューションの他のライブラリの方が先にロードされている。

両方の exe プロジェクトのリンカ設定を見ると lib の順番が違う。
一応替えてみると今度は上手くいく。

うーんこれはそういうものなのか、向こうのライブラリが悪いのか・・・
とりあえずそんなところで今日は終了。