Как вычленить CRT в проекте?

Тема в разделе "WASM.BEGINNERS", создана пользователем _nic, 28 июн 2011.

  1. _nic

    _nic New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2007
    Сообщения:
    372
    Что и куда нада добавить в Makefile.msc,что бы отключить проверку буфера?Добавление -Gs- в CFLAGS непомагает (((
    ЗЫ: а какие то внутренние оптимизации ml могут тащить за собой CRT ??
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    _nic
    И все-таки, ключ /MT пробовали?
     
  3. _nic

    _nic New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2007
    Сообщения:
    372
    Секция .CRT составляет 75% от размера всего выходного файла.
     
  4. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    Видимо всё же
     
  5. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.582
    а реально ли вычленить crt при компиляции в mingv (code::blocks)? Хочу накодить программу, но на чистом Апи. Даже если не вызываю в коде функции-не объявляю инклуды, все равно есть crt либа
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    M0rg0t
    До вызова main иницилизируется Сишный runtime - для этого она наверно и цепляется.
     
  7. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.582
    valterg
    А можно подробнее? Т.е. не использовать main , а WinMain? Я видел статьи, про отключение crt в студии, но там другой компилятор, я вот хз, можно ли это сделать в mingv.
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    хах... нет, на каждый main и WinMain найдется свой _CRTmain и CRTWinMainW (или ...A)... нужно использовать свою собственную точку входя вместо точки входа CRT...
     
  9. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.582
    Подниму опять тему. Вот пример кода для mingw, все равно компилируется с црт. В конфе мне подсказали, что /NODEFAULTLIB - это команда для студии, но неужели нет ничего такого для codeblocks?

    Код (Text):
    1. #include <windows.h>
    2. #pragma comment(linker, "/NODEFAULTLIB /ML /MERGE:.data=.text /MERGE:.rdata=.text /ALIGN:512 /ENTRY:WinMain")
    3.  
    4. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hInstance2, LPSTR lpstr, int integer)
    5. {
    6.     MessageBox(0, "Hello, World!", "Tiny application", MB_ICONINFORMATION);
    7.     return 0;
    8. }
     
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    при чем тут кодблокс? это - иде, а не компилятор... смотри необходимые тебе флаги gcc компилятора... для неконсольной сборки так же необходимо будет явно установить подсистему линкеру...

    ЗЫ например, я обычно собираю примерно так..
    компилятор:
    Код (Text):
    1. -Os -O3 -Wall -std=c++0x -fno-exceptions -fno-rtti -masm=intel -flto -m32
    линкер:
    Код (Text):
    1. -s -nostdlib -O3 -Os -flto -m32
    библиотеки:
    Код (Text):
    1. libntdll.a libkernel32.a libuser32.a libmsvcrt.a