Visual Studio 2005でWin95対応ソフトをコンパイル
Windows 95 で Visual Studio 2005 でコンパイルしたソフトを起動することができないのは、KERNEL32 の IsDebuggerPresent という関数がインポートされてしまうからです。
この関数は Windows 98から実装されています。
回避する方法は、
プログラム内に
EXTERN_C BOOL WINAPI _imp__IsDebuggerPresent(void) { return FALSE; } |
を埋め込む方法が一つ。 *注 この方法確認したら問題があるみたいなので、 MS11-025 を入れると 98/Me/NT/2000でソフトが動かなくなる件 その2 の方法を利用してください。
VisualStudio2005とIsDebuggerPresentとWindows95 | 上弦乃月
*注 このブログ記事も同様。
もう一つは、こちらに公開されている、imp.asm を インクルードして、imp.objをリンクさせることです。
かなり強引な方法でDLLのインポートを横取りする(未参照を防ぐ)
*注 このブログ記事は大丈夫。
後者の方法だと、
error LNK2005: __imp__IsDebuggerPresent@0 は既に imp.obj で定義されています。
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
の様になってしまうので、リンクオプションに /FORCE:MULTIPLE を指定してやる必要があります。
こうして、もふったーを v0.1.5より Windows 95 対応にしてみました。
Twitter Client Mo-Footer(もふったー)開発計画【BM】
Comments