Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Собрать проект на WDK, Ошибка линковки. 
:(
    Опции темы
Mechatronic
Дата 10.2.2016, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.3.2010

Репутация: нет
Всего: нет



Доброго времени суток.
Прошу консультации по следующему вопросу. Студент принес код на WinAPI, добытый из интернета (архив приложен), который должен собираться с помощью WDK, но возникают ошибки во время линковки *exe файла - линкер не находит стандартные функции вроде printf, malloc.
Сборка запускается следующей командой в директории src (согласно README  в архиве).
Код

build -cefgw


Подскажите, пожалуйста, какие манипуляции нужно выполнить, чтобы линкер "Подхватил" нужные библиотеки.

Спасибо.

Это сообщение отредактировал(а) Mechatronic - 10.2.2016, 19:01

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  DiskSector.rar 177,12 Kb
PM MAIL   Вверх
xvr
Дата 10.2.2016, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Код

#include "ntddk.h"
#include "stdio.h"
Так не бывает - в ядре нет стандартных сервисов ОС, равно как и нет стандартной библиотеки ввода вывода.

Цитата(Mechatronic @  10.2.2016,  18:57 Найти цитируемый пост)
линкер не находит стандартные функции вроде printf, malloc.

Нету их, совсем  smile . Используйте эквиваленты, которые есть в kernel сервисах ОС

PM MAIL   Вверх
Mechatronic
Дата 10.2.2016, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.3.2010

Репутация: нет
Всего: нет



Цитата(xvr @ 10.2.2016,  19:10)
Так не бывает - в ядре нет стандартных сервисов ОС, равно как и нет стандартной библиотеки ввода вывода.

Спасибо за ответ. Это ожидаемо. Но известно, что автор кода его как-то собирает - бинарник так же имеется в архиве. Не подскажете, как это может объясняться?
PM MAIL   Вверх
xvr
Дата 11.2.2016, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



В сорце sector.c не замечено никаких функций из stdio.h (ни printf ни malloc). Есть только строковые функции, а они в каком то виде в ядре есть (видимо прямо такие и есть  smile )
То, что в тексте есть #include "stdio.h" видимо не препятствует сборке (stdio.h где то по путям есть, хотя она и не нужна)

А при сборке того, что лежит в папке exe stdio.h и все его производные вполне допустимы - это обычная консольная программа

И libc подается, судя по логу от сборки:

Код

1>      link -out:..\..\bin\chk_wxp_x86\i386\DiskSector.exe -machine:ix86 @C:\DOCUME~1\Pankaj\LOCALS~1\Temp\nma03676.
1>Microsoft (R) Incremental Linker Version 7.00.9210
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>
1>-MERGE:_PAGE=PAGE
1>-MERGE:_TEXT=.text
1>-SECTION:INIT,d
1>-OPT:REF
1>-OPT:ICF
1>-IGNORE:4010,4037,4039,4065,4070,4078,4087,4089,4198,4221
1>-INCREMENTAL:NO
1>-FULLBUILD
1>/release
1>-NODEFAULTLIB
1>/WX
1>-debug:FULL
1>-debugtype:cv
1>-version:5.1
1>-osversion:5.1
1>/opt:nowin98
1>-STACK:0x40000,0x1000
1>-merge:.rdata=.text
1>/tsaware
1>-subsystem:console,4.00
1>-base:@C:\WINDDK\2600~1.110\bin\coffbase.txt,usermode
1>-entry:mainCRTStartup
1>objchk_wxp_x86\i386\sector_io.obj
1>C:\WINDDK\2600~1.110\lib\wxp\i386\libc.lib              <<<<<<<<<<<<<<<<<<
1>C:\WINDDK\2600~1.110\lib\wxp\i386\advapi32.lib
1>C:\WINDDK\2600~1.110\lib\wxp\i386\kernel32.lib

PM MAIL   Вверх
DarthTon
Дата 14.2.2016, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 7.2.2009

Репутация: 5
Всего: 6



WDK может нормально собирать юзермодные приложения. Там даже есть поддержка CRT и STL, только немного специфичная. Просто в sources файле надо добавить ключ USE_MSVCRT=1.
PM MAIL   Вверх
Mechatronic
Дата 15.2.2016, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.3.2010

Репутация: нет
Всего: нет



В /src/exe/sector_io.c есть printf, malloc.

Добавлено через 3 минуты и 35 секунд
Цитата(DarthTon @ 14.2.2016,  18:03)
WDK может нормально собирать юзермодные приложения. Там даже есть поддержка CRT и STL, только немного специфичная. Просто в sources файле надо добавить ключ USE_MSVCRT=1.

Спасибо за подсказку! Попробуем.
PM MAIL   Вверх
Mechatronic
Дата 15.2.2016, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.3.2010

Репутация: нет
Всего: нет



Студент говорит, что все работает - собрали с предложенным ключом.
Спасибо большое за обсуждение!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1097 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.