Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6472
Последний выпуск: 19.06.2015

Уменьшение размера программы

23K
31 июля 2012 года
1_2
34 / / 09.01.2012
В интернете я нашёл инструкцию по уменьшению размера компилируемой программы, сделал всё как там написано, но ничего не компилируется, выдаёт такие ошибки:

командная строка error D8016: несовместимые параметры командной строки '/GL' и '/ZI'

Изменил флаг /ZI на Отключено. Появились следующие ошибки:

1>Компиляция...
1>cl: командная строка warning D9007: для '/Gm' требуется '/Zi или /ZI'; параметр пропущен
1>stdafx.cpp
1>Компиляция...
1>cl: командная строка warning D9007: для '/Gm' требуется '/Zi или /ZI'; параметр пропущен
1>CApp.cpp
1>Компоновка...
1>CApp.obj : найден .netmodule MSIL или модуль, откомпилированный с параметром /GL; перезапускается компоновка с параметром /LTCG; добавьте /LTCG в командную строку компоновки для повышения производительности компоновщика
1>LINK : warning LNK4075: не учитывается "/INCREMENTAL" из-за спецификации "/LTCG"
1>LINK : error LNK2001: неразрешенный внешний символ "_int mymain(void);"
1>CApp.obj : error LNK2001: неразрешенный внешний символ "_printf"
1>CApp.obj : error LNK2001: неразрешенный внешний символ "_getchar"
1> ... fatal error LNK1120: 3 неразрешенных внешних элементов

Подскажите, что не так? Вот тестовая программа:


Код:
#include "stdafx.h"

#pragma comment(linker,"/SECTION:.text,ERW")
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/MERGE:.data=.text")

int mymain(void)
{
    printf("Hello World");
        getchar();
    return 0;
}

Сайт, с которого инфа: http://blog.f5soft.com/%D1%83%D0%BC%D0%B5%D0%BD%D1%8C%D1%88%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%B5%D0%BC%D0%BE%D0%B3%D0%BE-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0-visual-studio-part1/


Заранее спасибо!
261
01 августа 2012 года
arrjj
1.7K / / 26.01.2011
Чем не разбираясь копировать чьё то решение лучше бы почитал Compiler Options и Linker Options. mymain нет такого вызова т.к. ты небось именно скопировал /ENTRY:somefunction а должно быть /ENTRY:mymain. printf и getchar отсутствуют из-за того что ты указал ключ /NODEFAULTLIB - тебе надо либы стандартные ручками добавить или указать инклюд stdio. Вобщем читай справку.

Ну а вообще имхо проще уже скомпиленый exe какимнибудь пакером сжать. PECompact например.
23K
03 августа 2012 года
1_2
34 / / 09.01.2012
Я подключаю stdio.h, но программа по-прежнему не работает (неразрешенный внешний символ "_printf"). Подключаю windows.h и ф-ии, находящиеся там, работают. Почему же не работают ф-ии из stdio.h?
261
03 августа 2012 года
arrjj
1.7K / / 26.01.2011
потому что кроме как подключить заголовочный файл, в котором содержаться только описания функций, тебе надо прилинковать .lib или .obj файл, в котором содержатся сами функции.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог