![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Xerx |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.5.2005 Где: Калуга Репутация: нет Всего: нет |
Кто знает компилятор, генерирующий Win32EXE, не требующий для работы сторонних библиотек (как например msvcrt.dll)?
Я пока нашел лишь Digital Mars. Он компилирует
в exe'шник, требующий лишь user32.dll и kernel32.dll. Т.е. то, что мне и нужно. Но, размер файла более 30Кб. Не смертельно, но меньше у меня не получилось сделать. Есть ли компиляторы лучше? P.S. Критично, чтобы НЕ использовались сторонние библиотеки. Итоговый размер уже менее важен. Это сообщение отредактировал(а) Xerx - 14.8.2007, 17:37 |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
Xerx |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.5.2005 Где: Калуга Репутация: нет Всего: нет |
Если бы все было так легко. Я пытаюсь это сделать на следующих вариантах:
MSVS 2005 с таким кодом:
Включил опцию /nodefaultlib, теперь компилятор ругается Error 1 error LNK2001: unresolved external symbol @__security_check_cookie@4 TestProject.obj Если опцию не включать, но выключить генерацию отладочного кода, в итоговом файле используется только User32.dl. Но размер 60Кб! Меньше никак нельзя? В MinGW аналогично, только #include <windows.h>. Как я ни бился - используется msvcrt.dll. Зато размер - 5Кб, что очень даже хорошо. Аналогично в Code::Blocks (тот же компилятор) BCB, к сожалению, под рукой нет. Digital Mars генерирует файл без доп. библиотек, но создается консольное приложение на 30Кб. Избавиться от этого я не смог. Emacs это вообще тихий ужас ;-) Кто может привести точное описание (желательно по шагам) для конкретной среди и конкретного компилятора отключения использования доп. библиотек, чтобы после этого можно было корректно скомпилировать приведенный выше код? Буду благодарен. |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Откажись от RTL(CRT). В случае с mingw32 остается mingwm10.dll, можно попробывать эти флаги:
-static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc http://www.rsdn.ru/article/cpp/crt.xml Попробуй этот код скомпилить через mingw32:
Я так понял придется еще отказаться от нитей и эксепшенов. Это сообщение отредактировал(а) SABROG - 15.8.2007, 14:11 |
|||
|
||||
Xerx |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.5.2005 Где: Калуга Репутация: нет Всего: нет |
Мне НЕ нужна поддержка CRT/RTL, RTTI, MFC, ООП и так далее. Ну и никаких встроенных memcpy, strlen и new/delete мне НЕ нужно.
Только минимальный размер итоговой программы, использующей только Win32API вызовы. Но надо compiler+IDE+debugger. Смог скомпилировать этот код:
с помощью MSVS2005. Получил EXE'шник размером в 2Кб. Причем используются только User32.MessageBoxA и Kernel32.ExitProcess. Причем никаких выравнивания я не использовал. Собственно, что и хотелось. А как насчет других сред? Слишком мне эта MSVS непривычная (я ее впервые в жизни запустил): перегруженная, тормознутая и т.д и т.п.... ;-) В примере
Мне не нравится использование iosteam - это мне излишне. Ну и соответственно нужно выкинуть cout. Нужно ТОЛЬКО Win32API. Это сообщение отредактировал(а) Xerx - 15.8.2007, 14:32 |
||||
|
|||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Может легче тогда будет на ассемблер сесть ? Fasm хорошая алтернатива, полностью управляемый код, ничего лишнего вообще, кроссплатформенный. Насчет MSVCRT статейка есть, смысл сходится к тому, чтобы заменить msvcrt на другую библиотеку - http://msdn.microsoft.com/msdnmag/issues/0...od/default.aspx
|
|||
|
||||
Xerx |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.5.2005 Где: Калуга Репутация: нет Всего: нет |
SABROG
Я предпочитаю MASM. Уже много лет под ним сижу. Но мне сейчас нужен компилятор ИМЕННО C++. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |