Windows DDK のまったくの初心者であることをお許しください。
次の名前の単純なファイルを作成しましたtest.cpp。
#include <windows.h>
#define BAD_ADDRESS 0xBAADF00D
int __cdecl main(int argc, char* args[])
{
char* p =(char*)BAD_ADDRESS;
*p='A';
return 0;
}
同じディレクトリに、次のsourcesようなファイルを作成しました。
TARGETNAME=テスト TARGETTYPE=プログラム TARGETPATH=obj TARGETLIBS=$(SDK_LIB_PATH)\kernel32.lib ソース= test.cpp
そして、makefileこのような:
# # このファイルは編集しないでください!!! .\sources を編集します。新しいソースを追加したい場合 # ファイルをこのコンポーネントに追加します。このファイルは、実際のメイク ファイルを間接的に参照するだけです。 # Windows のすべてのコンポーネントで共有される # !INCLUDE $(NTMAKEENV)\makefile.def
Windows XP Free Build Environment を起動した後、3 つのファイル (test.cpp、makefile、およびソース) を含むディレクトリを参照し、次のコマンドを実行します。
F:\temp\debug\dir1>build -cZg
どの出力:
ビルド: /Y を COPYCMD に追加して、xcopy ops がハングしないようにします。
ビルド: 2 つの子プロセスを使用する
ビルド: オブジェクト ルートを次のように設定: ==> objfre_wxp_x86
ビルド: i386 用のコンパイルとリンク
ビルド: コンパイルするファイルの f:\temp\debug\dir1 ディレクトリを調べています。
ビルド: コンパイル (NoSync) f:\temp\debug\dir1 ディレクトリ
1>コンパイル - i386 用の test.cpp
ビルド: f:\temp\debug\dir1 ディレクトリをコンパイルしています
ビルド: f:\temp\debug\dir1 ディレクトリをリンクしています
1>実行可能ファイルのリンク - objfre_wxp_x86\i386\test.exe for i386
ビルド: 完了
コンパイルされた 2 つのファイル
1 つの実行可能ファイルがビルドされました
問題は、作成した実行可能ファイルを実行すると、次のように表示さtest.exeれることです。
F:\temp\debug\dir1\objfre_wxp_x86\i386>テスト F:\temp\debug\dir1\objfre_wxp_x86\i386\test.exe アプリケーションは、Win32 モードでは実行できません。
ここで何が欠けていますか?