Поиск:

Ответ в темуСоздание новой темы Создание опроса
> собрать программу без стандартных библиотек, error LNK2001 
V
    Опции темы
Logree
Дата 1.10.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вот хочу собрать такую программу

Код

int main() {
    unsigned int c = 5, a = 4, b = 3;
    c += a - b;
    return 0;
}


естественно для неё не требуются ни каккие дополнительные библиотеки, у линкура включаю опцию игнорирования стандартных библиотек и получаю следующую оштибку:

Код

error LNK2001: неразрешенный внешний символ "@__security_check_cookie@4"


погуглил, ни чего не нашёл...
помогите в решение проблеммы.
VC++ 2010E


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
jonie
Дата 1.10.2010, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Logree, укажите в опциях Linker->Advanced EntryPoint на main


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Logree
Дата 1.10.2010, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я это сделал, без этого там другая ошибка вылазит.


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
586
Дата 2.10.2010, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

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



Logree,
проверь параметры 
C/C++ -> Code Generation -> Buffer Security Check
и
C/C++ -> Code Generation -> Basic Runtime Checks.
PM   Вверх
Logree
Дата 2.10.2010, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



проверка перреполнения буфера: Да /GS
основные проверки времени выполнения: по умолчанию

поменял /GS на /GS- нормально компилируется но экзэшник весит 2.5 Kb что много, неужели это заголовок столько весит?

проверил,  с библиотеками весит столькоже.

в чём дело?

загрузил программу в IDA:
в первой секции только 
Код

 xor     eax, eax
 retn
  

потом идёт секция 2 с бесполезными данными, вроде расположения проекта и названия студии.
Я вообще не разбираюсь в формате PE, где мне там искать тот код что я написал?

Это сообщение отредактировал(а) Logree - 2.10.2010, 16:13


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
586
Дата 2.10.2010, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

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



Цитата(Logree @  2.10.2010,  16:41 Найти цитируемый пост)
поменял /GS на /GS- нормально компилируется но экзэшник весит 2.5 Kb что много, неужели это заголовок столько весит?

Манифест ещё отключи:
Configuration Properties -> Manifest Tool -> Input and Output -> Embed Manifest = No.
Цитата(Logree @  2.10.2010,  16:41 Найти цитируемый пост)
потом идёт секция 2 с бесполезными данными, вроде расположения проекта и названия студии.

Это отладочная информация.
Отключается здесь: Configuration Properties -> C/C++ -> General -> Debug Information Format = Disabled.

И подобные оптимизации желательно делать с Release проектом.

Это сообщение отредактировал(а) 586 - 2.10.2010, 20:15
PM   Вверх
Logree
Дата 3.10.2010, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Это отладочная информация.
Отключается здесь: Configuration Properties -> C/C++ -> General -> Debug Information Format = Disabled

такого пункта нет, я просто очистил это поле

наверное имелось в виду
Код

Компоновщик -> Отладка -> Создавать отладочную информацию = нет


и того 1Kb что вроде бы соответствует заголовок+код
НО повторю вопрос, где мне искать сам код программы? IDA выдаёт следующее:

Код

.text:00401000                 .686p
.text:00401000                 .mmx
.text:00401000                 .model flat
.text:00401000
.text:00401000 ; ===========================================================================
.text:00401000
.text:00401000 ; Segment type: Pure code
.text:00401000 ; Segment permissions: Read/Execute
.text:00401000 _text           segment para public 'CODE' use32
.text:00401000                 assume cs:_text
.text:00401000                 ;org 401000h
.text:00401000                 assume es:nothing, ss:nothing, ds:_text, fs:nothing, gs:nothing
.text:00401000
.text:00401000 ; --------------- S U B R O U T I N E ---------------------------------------
.text:00401000
.text:00401000
.text:00401000                 public start
.text:00401000 start           proc near
.text:00401000                 xor     eax, eax
.text:00401002                 retn
.text:00401002 start           endp
.text:00401002
.text:00401002 ; ---------------------------------------------------------------------------
.text:00401003                 align 200h
.text:00401003 _text           ends
.text:00401003
.text:00401003
.text:00401003                 end start





--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
586
Дата 3.10.2010, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

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



Цитата(Logree @  3.10.2010,  01:27 Найти цитируемый пост)
НО повторю вопрос, где мне искать сам код программы? IDA выдаёт следующее:

Возможно, компилятор оптимизировал код, и выбросил всё лишнее. Напиши что-нибудь такое, неподдающееся оптимизации:
Код
int main() {
    __asm int 3;
    volatile unsigned int c = 5, a = 4, b = 3;
    c += a - b;
    return 22;
}


Это сообщение отредактировал(а) 586 - 3.10.2010, 01:00
PM   Вверх
Logree
Дата 4.10.2010, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



проблема решена, спасибо.


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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