компиляция программ на С (VC2008)

Тема в разделе "WASM.HEAP", создана пользователем TerraIncognita, 14 июн 2008.

  1. TerraIncognita

    TerraIncognita New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2008
    Сообщения:
    22
    есть исходник на C... как его студией откомпилить?
    как вообще компилятся программы на С.. для этого разве обязательно в студии создавать новый проект? можно и с консоли... но тогда придется вручную много параметров передавать ведь... да и если с консоли, то не знаю, как ресурсы подключать... :dntknw:

    в общем, как удобнее компилировать... да и если создавать проект... то приходится добавлять туда все иклюды и т.д... и компилится как приложение на С++, а не на С... от этого, наверно, и размер больше будет.

    объясните, пожалуйста. я до этого никогда не компилировал студией...

    а то даже не могу примеры с МСДНа скомпилить и проверить %)
     
  2. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    командная строка рулит cl.exe filename.c - без оптимизации, cl.exe /Ox filename.c - макс. оптимизация.
     
  3. TerraIncognita

    TerraIncognita New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2008
    Сообщения:
    22
    а RES-файл как подключать при компиляции?
     
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    TerraIncognita
    ресурсы обрабатываются линковщиком.
    Код (Text):
    1. link yourobj.obj resources.res
    yourobj.obj - объектник полученный после компиляции
    +необходимые параметры для линковки
    параметры можно посмотреть в хелп-файле от масма, там и для компилера, и для линковщика есть
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Проще создать проект.

    Зачем?

    1) Можно выставить сборку как С или как С++.
    2) Размер больше не будет
     
  6. TerraIncognita

    TerraIncognita New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2008
    Сообщения:
    22
    RamMerLabs:
    cl test.c /c /link user32.lib <- это чтоб получить OBJ
    link /SUBSYSTEM:WINDOWS test.obj test.res

    unresolved external symbol __imp__DefWindowProcA@16
    unresolved external symbol __imp__PostQuitMessage@4
    .... и т.д. что я не так делаю?



    Great: все равно ресурсы не подключаются.
    а опцию эту я уже нашел...
     
  7. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    TerraIncognita
    либы нужно указать линковщику. в данном случае user32.lib

    вот пример сборки через командную строку:

    Код (Text):
    1. link kernel32.lib user32.lib /nologo /subsystem:windows file.obj file.res /pdb:none /machine:I386 /out:"file.exe"
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Добавь в проект .rc / .res файл и он сам слинкуется
     
  9. TerraIncognita

    TerraIncognita New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2008
    Сообщения:
    22
    RamMerLabs , огрмоное спасибо!! =)

    Great, сделал чуть не так - в настройках проекта прописать путь к RES-файлу. иконка с ресурсов у экзешника появилась, но диалоговое окошко не появляется при запуске...

    скомпилил с консоли, как сказал RamMerLabs , - получилось... =)

    я догадываюсь, почему... студия 2008 по-умолчанию "работает с юникодом" =(((
    то есть, при вызове MessageBox мне приходится писать не MessageBox(..,..,..,..), а MessageBoxA. по умолчанию ведь "W". а так как в сорце, который я компилю нету в конце имен ф-ий Win32 API "W", и "A", то считается, как "W".

    можно как-то сделать, чтоб отключился этот ЮНИКОД?... рылся в настройках проекта - не нашел там...


    с консоли, мне кажется, компилировать удобнее...
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    #undef UNICODE

    зависит от конечной цели. но чаще удобнее из студии. иначе бы ее просто не делали.
     
  11. TerraIncognita

    TerraIncognita New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2008
    Сообщения:
    22
    ВСе! Огромное спасибо всем! #UNDEF UNICODE помог нормально! получается компилировать и с консоли и из студии! =) THX