【问题标题】:Error when compiling with Windows DDK使用 Windows DDK 编译时出错
【发布时间】:2008-10-22 17:32:43
【问题描述】:

请原谅我是 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 模式下运行。

我错过了什么?

【问题讨论】:

    标签: windows wdk


    【解决方案1】:

    您已经编译了一个“本机应用程序”而不是一个 win32 应用程序。 TARGET_TYPE 定义对此进行控制。

    有关使用 DDK 生成本机应用程序的讨论,请参阅“Inside Native Applications”。

    【讨论】:

      【解决方案2】:

      Rob Walker 解释了原因,而Kernel Mustard 解释了方法。

      【讨论】:

      • 这个已经足够接近,可以完成这项工作。将其设置为接受即使很难,也需要进行一些调整。
      • Kernel Mustard 链接现已失效:(
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      相关资源
      最近更新 更多