2008-10-22 4 views
1

Простите меня за то, что вы новичок в Windows DDK.Ошибка при компиляции с 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 E nvironment я просматриваю к директории с тремя файлами (test.cpp, Makefile и источников) и выполните следующую команду:

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

Rob Walker объясняет, почему, но Kernel Mustard объясняет, как.

+0

Этот человек получил достаточно близко, чтобы позволить выполнять работу. Для того, чтобы он был принят, он даже требовал некоторой настройки. – 2008-10-23 10:32:34

3

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^