Hatena::Groupsubtech

ういはるかぜの化学

Friday, June 18, 2010

x64環境でIL Only(Any CPU)な.NET 実行アセンブリを32bit CLRで動作させる 13:28  x64環境でIL Only(Any CPU)な.NET 実行アセンブリを32bit CLRで動作させる - ういはるかぜの化学 を含むブックマーク はてなブックマーク -  x64環境でIL Only(Any CPU)な.NET 実行アセンブリを32bit CLRで動作させる - ういはるかぜの化学

64bit(x64)環境でAny CPUとしてビルドされた.NETアセンブリを実行しようとすると通常は64bitのCLRで起動されます。

ところが64bitのCLRで起動されたあとアプリケーションがP/InvokeなどのためにDLLを読み込もうとして、うっかり32bitのDLLを読んだりすると64bitから32bitのライブラリを読むことはできないのでBadImageFormatExceptionを吐いて止まってしまいます。

そういう場合には無理やり32bitのCLRで動かしてあげることになります。

ということで32bitのCLRで読み込ませるにはどうしたらということですが、アセンブリフラグを書き換えてあげれば起動時に32bitのCLRを選択してくれます。フラグの書き換えはSDKに入っているcorflags.exeというツールで行えます。かんたんですね!

no title

corflags.exe /32BIT+ Hauhau.exe
トラックバック - http://subtech.g.hatena.ne.jp/mayuki/20100618