> Я это уже смотрел, но про CRT там ничего нет. Может он называется по-другому? Я в этом пока не разбираюсь( #pragma comment(linker,"/entry:MyWinMain") #pragma comment(linker,"/nodefaultlib") void __stdcall MyWinMain( void ) { ... }
Уррря! Я постиг секрет хеккерской линковки!! Всем огромное спасибо! Особенно Kezу)) ЗЫ прикольно, в конце упикс пожал получившийся 16кб файл в 8 раз и получились заветные 2 кб!!! ))))))0 теперь можно спокойно идти спать.......
Ну если у тебя получился файл размером 16кб, значит ты не постиг тайну линковщика =) Читай информацию по ссылке, которую я дал тебе в одном из своих сообщений.
http://uinc.ru/articles/28/ В билдере можно что-то подобное сделать? Пробовал как в статье: не получается, причем размер пустого проекта достигает 50! кб.
В Bcb6 нет же режимов дебаг или релиз. В Vs05 при обоих режимах ошибки. В Bcb6 можно собрать маленькое приложение, как в статье?
lexer666 Code: #include <windows.h> #pragma comment(linker,"/entry:WinMain") #pragma comment(linker,"/nodefaultlib") #pragma comment(linker, "/MERGE:.rdata=.text") #pragma comment(linker, "/MERGE:.data=.text") #pragma comment(linker, "/SECTION:.text,EWRX") #pragma comment(linker, "/IGNORE:4078") #pragma comment(linker, "/opt:nowin98") int __stdcall WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { MessageBox(0,Path_to_WIN,Path_to_SYS, 0); return 0; } у меня VS6. на выходе 1 кб.
Круто!!! Кстати расположение данных в одну секцию .text при определенных условиях может у некоторых антивирей (Panda, AntiVir, ещё кто-то) вызывать подозрения.
lexer666, для bcb нужно отключать опции непосредственно в проекте, через pragma comment ты этого не сделаешь.
Code: #pragma comment(linker, "/MERGE:.rdata=.text") #pragma comment(linker, "/MERGE:.data=.text") #pragma comment(linker, "/SECTION:.text,EWRX") #pragma comment(linker, "/IGNORE:4078") Многие считают что это некая просьба вижуал студии "пожалуйста, собери экзешник поменьше". На самом деле юзать эти прагмы надо с умом, а /ignore:4078 можно вообще выкинуть. Видимо поэтому её и нет в линкерах следующих версий студий. Если убираете CRT - вырубайте все проверки компилятора, туда ссылающиеся, делайте свой operator new и delete, и т.п. Причем в след. студиях Release сборка почему-то (никто не знает) позволяет создать бинарник меньше (из-за уменьшения выравнивания файла (не путать с секциями), такая опция есть только у линкеров VS6, дальше нету). Вообщем, может я не тщательно смотрел, но в 7 и 8 студиях ставить релиз необходимо - иначе хер соберется самый маленький бинарник. Странно что они так сделали, по логике Debug и Release - "пресеты" настроек и не должны содержать в себе чего-то, что нельзя поменять через эти настройки. Ещё насчет оптимизация - как-то уж очень хуево она сделана в студиях 7 и 8. А может и 6 - незнаю. Ставишь minimize size и компиллер тебе женской логикой выбрасывает из кода всякое, по его мнению "говно", которое не используется или возвращает константу и т.п.