Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Консольная прога в DDK  (Прочитано 5686 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
zuuuuk
Постоялец

ru
Offline Offline

« : 27-07-2008 19:49 » new

Я залез немного не на тот форум. но именно тут собираються  знатока DDK.
Хотелось бы посоветоваться с вами.
хочу откомпилировать программу с помощью DDK, но появляеться ошибка:

1>example.c(3) : error C2220: warning treated as error - no object file generated
1>example.c(3) : error C4007: 'main' : must be '__cdecl'

программа простенькая example.c:

#include <stdio.h>
int main(int argc, char **argv[])
{
 printf ("Hello\n");
 return 0;
}

вот сорс фаил:

TARGETNAME=example
TARGETTYPE=PROGRAM
UMTYPE=console
UMBASE=0x1000000
TARGETPATH=obj
TARGETLIBS=$(DDK_LIB_PATH)\libc.lib
INCLUDES=$(DDK_LIB_PATH)\crt

SOURCES=example.c

Makefile:
!INCLUDE $(NTMAKEENV)\makefile.def

благодарю за внимание.



Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 27-07-2008 20:02 » 

на вскидку не скажу, я консольным компилятором никогда не пользовался...
а DDK под рукой нет...
залезь в папку DDK\src
найди любой пример приложения(в смысле НЕ драйвера) и посмотри как там написано.
...
да! компилить надо в консоли созданной с большим списком переменных окружения.
для этого - вызвать бат-файл который DDK при установке в меню Пуск создало.

а вообще какой смысл так извращаться то?)

PS а функции ядра по умолчанию __stdcall... так что - маин надо объявить именно с __cdecl
« Последнее редактирование: 27-07-2008 20:05 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 28-07-2008 05:33 » 

да. все верно.
обязательно указать тип вызова _cdecl для процедуры main (о чем собственно прямым текстом написано в описании ошибки "error C4007")

почитайте про особенности _cdecl и _stdcall.
« Последнее редактирование: 28-07-2008 05:42 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines