Ошибка при компиляции с Windows DDK - PullRequest
1 голос
/ 22 октября 2008

Простите, что я новичок в 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=test
TARGETTYPE=PROGRAM
TARGETPATH=obj

TARGETLIBS=$(SDK_LIB_PATH)\kernel32.lib 

SOURCES= test.cpp

А makefile вот так:

#
# DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source
# file to this component.  This file merely indirects to the real make file
# that is shared by all the components of Windows
#
!INCLUDE $(NTMAKEENV)\makefile.def

После запуска Windows XP Free Build Environment я перехожу в каталог с тремя файлами (test.cpp, makefile и sources) и запускаю следующую команду:

F:\temp\debug\dir1>build -cZg

Какие выходы:

BUILD: Adding /Y to COPYCMD so xcopy ops won't hang.
BUILD: Using 2 child processes
BUILD: Object root set to: ==> objfre_wxp_x86
BUILD: Compile and Link for i386
BUILD: Examining f:\temp\debug\dir1 directory for files to compile.
BUILD: Compiling (NoSync) f:\temp\debug\dir1 directory
1>Compiling - test.cpp for i386
BUILD: Compiling  f:\temp\debug\dir1 directory
BUILD: Linking f:\temp\debug\dir1 directory
1>Linking Executable - objfre_wxp_x86\i386\test.exe for i386
BUILD: Done

    2 files compiled
    1 executable built

Проблема в том, что когда я запускаю созданный исполняемый файл test.exe, он говорит:

F:\temp\debug\dir1\objfre_wxp_x86\i386>test
The F:\temp\debug\dir1\objfre_wxp_x86\i386\test.exe application cannot be run in Win32 mode.

Что мне здесь не хватает?

Ответы [ 2 ]

3 голосов
/ 22 октября 2008

Вы скомпилировали «родное приложение», а не win32. Определение TARGET_TYPE контролирует это.

См. ' Inside Native Applications ' для обсуждения использования DDK для создания собственного приложения.

2 голосов
/ 22 октября 2008

Роб Уокер объясняет почему, но Ядро горчицы объясняет как.

...