В общем-то сабж.
Есть чудесные строчки кода по уменьшению выходного файла при компиляции в С++.
Без никаких нареканий компилятся в Visual C++ из VS6
Код:
#pragma comment(linker,"/MERGE:.rdata=.text")
#pragma comment(linker,"/FILEALIGN:512 /SECTION:.text,EWRX /IGNORE:4078")
#pragma comment(linker,"/ENTRY:main")
В Visual C++ 2008 Express Edition возникают сложности.
Почитав MSDN
Цитата /SECTION (Specify Section Attributes):
"/SECTION":
'E' - Execute ("The section is executable").
'W' - Write ("Allows write operations on data").
'R' - Read ("Allows read operations on data").
'X' - Memory-resident ("VxD only; marks the section as memory-resident"). >>
|
убираю
Х, меняю
/SECTION:.text,EWRX на
/SECTION:.text,EWR.
После этого удаётся их скормить и новейшему компилятору от МикроСофт.
Тем не менее, он их воспринимает с предупреждениями
Код:
main.obj : warning LNK4229: invalid directive '/FILEALIGN:512' encountered; ignored
main.obj : warning LNK4229: invalid directive '/IGNORE:4078' encountered; ignored
и выдаёт ЕХЕ несколько больше чем компилятор из далёкого 1998года.
Сейчас не проверял, но помнится компилятор 2003го тоже адекватно воспринимал строчки кода, как и 1998 и даёт ехе несколько меньше. Насчёт 2005го не знаю.
В новой редакции MSDN замены им
не было найдено. Какие необходимо дать эквиваленты директивы взамен
'/FILEALIGN:512' и
'/IGNORE:4078'? Или есть строчки поколения 2008, которые фантастически уменьшают размер проги?
Указанные выше строки времён 1998го года.