请原谅我是一个完整的 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
像这样的文件:
目标名称=测试 目标类型=程序 目标路径=obj TARGETLIBS=$(SDK_LIB_PATH)\kernel32.lib 来源= test.cpp
像makefile
这样:
# # 不要编辑这个文件!!!编辑 .\sources. 如果你想添加一个新的来源 # 文件到这个组件。这个文件只是间接到真正的 make 文件 # 由 Windows 的所有组件共享 # !包括 $(NTMAKEENV)\makefile.def
启动 Windows XP Free Build Environment 后,我浏览到包含三个文件(test.cpp、makefile 和源)的目录并运行以下命令:
F:\temp\debug\dir1>build -cZg
哪个输出:
构建:将 /Y 添加到 COPYCMD,这样 xcopy 操作就不会挂起。 BUILD:使用 2 个子进程 构建:对象根设置为:==> objfre_wxp_x86 构建:为 i386 编译和链接 BUILD:检查 f:\temp\debug\dir1 目录中要编译的文件。 构建:编译 (NoSync) f:\temp\debug\dir1 目录 1>编译-i386的test.cpp 构建:编译 f:\temp\debug\dir1 目录 构建:链接 f:\temp\debug\dir1 目录 1>链接可执行文件 - i386 的 objfre_wxp_x86\i386\test.exe 构建:完成 2个文件编译 构建了 1 个可执行文件
问题是当我运行创建的可执行文件test.exe
时它说:
F:\temp\debug\dir1\objfre_wxp_x86\i386>test F:\temp\debug\dir1\objfre_wxp_x86\i386\test.exe 应用程序无法在 Win32 模式下运行。
我在这里想念什么?