Собственно, подскажите компилятор для C++, который создает Win32EXE, не использующий сторонних библиотек (например msrtl.dll, библиотек BCB и т.п.).
rain прагмами лучше не баловаться, ибо бывают глюки, с этим связанные) Я обычно все в настройках проекта отключаю/включаю/меняю, что мне нужно
Насколько помню, в том же BCB отключение этой опций заставляет компилятор включить в саму программу нужный код из всяких там *.bpl или как-то так, но основная DLL-библиотека все равно используется. В MV что-то подобное. Я сейчас с телефона и не могу проверить, но вроде все так и есть. Завтра на работе посмотрю. Я не прав?
Если ты хочешь отказаться от всех фич типа memcpy, strlen, некоторых особенностей ООП и прочего, тогда комипллер MS VS 6 - самый лучший варинат. Хотя как редактор кода - полный кал имхо. опция #pragma comment(linker,"/nodefaultlib") уберет все левые либы. #pragma comment(linker,"/entry:MainPROC") - уберет все шаманские пляски связанные подготовкой приложения к старту, а если борешься за каждый байт получившегося бинарника, то опция #pragma comment(linker,"/filealign:0x200") застваит выравнивать по минимальному размеру, который воспринимет загрузчик.
можно получить доступ к mem* функциям прилинковав ntdll.lib. srt* почти все заменяются аналогами из WinAPI. strlen -> lstrlenA, например.
http://wasm.ru/forum/viewtopic.php?pid=188444#p188444 я тут писал про то, откуда возникает большой размер хеллоу-ворлд прог
Вот как раз от memcpy, strlen отказываться не надо - они встраиваемые Компилеру (cl.exe) пофигу если или нет описания этих функций. более того некоторые версии заменяют Код (Text): int l = size; char* p = data; while (l--) { *p++ = 0x20; } код на вызов memset!
Посмотрел что мне ту предложили, и сделал на MSVS2005 такой код Код (Text): #include <windows.h> void start() { MessageBox(0, "Hello!", NULL, 0); ExitProcess(0); } в EXE'шник размером в 2Кб. Причем используются только User32.MessageBoxA и Kernel32.ExitProcess. Причем никаких выравнивания я не использовал. Собственно, что и хотелось. А как насчет других сред? Слишком мне эта MSVS непривычная (я ее впервые в жизни запустил): перегруженная, тормознутая и т.д и т.п.... Мне НЕ нужна поддержка CRT/RTL, RTTI, MFC, ООП и так далее. И, раз уж они тут упоминались, то и никаких встроенных memcpy и strlen мне НЕ нужно. Только минимальный размер итоговой программы, использующей только Win32API вызовы. Но надо compiler+IDE+debugger.
censored Посмотрел LCC. Код Код (Text): #include <windows.h> int APIENTRY WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpCmdLine, int nCmdShow) { MessageBox(0, NULL, NULL, 0); return 0; } он скомпилировал в 11.5Кб с использованием CRTDLL.DLL. И я нигде не нашел описания ключей для настройки компиляции. Где о них прочитать? Да и отсутствие IDE это большой минус.
IceStudent Ищу КОМПИЛЯТОР. Требования выше. Но такой, чтобы его можно было использовать в интегрированной IDE (редактор, поддержка этого компилятора и отладчик). А IDE мне не нравится ТОЛЬКО MSVS. Почему, я уже писал.
Xerx Под рукой данного компилятора сейчас нет. Обычно либо смотрю хелпы, к-рые с ним идут (там все ключи должны быть указаны), либо lcc /?. Точно помню, что можно сделать меньше размер. Вы может не то смотрели? IDE там есть, наверное, не самая лучшая (по причине неиспользования IDE вообще ничего не могу сказать), но в ней точно можно выставлять настройки проекта.
censored Хелпов нет. man'ов нет. Есть только dllwiz.hlp, indent.hlp и mc.hlp. Следующие параметры lcc НЕ понимает: ? /? -? -h /h -help --help IDE есть (wedit), но в нем настроек почти нет. Справки тоже нет. P.S. Скачал LCC с http://www.cs.virginia.edu/~lcc-win32/