Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


В общем-то сабж.
Есть чудесные строчки кода по уменьшению выходного файла при компиляции в С++.
Без никаких нареканий компилятся в 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го года.

Отправлено: 15:33, 24-05-2008 | #3