vc2008

Тема в разделе "WASM.HEAP", создана пользователем NoName, 24 май 2008.

  1. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Как сделать так чтобы не была нужна библиотека msvcr90d.dll для работы программы?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    линковать статически..
     
  3. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    1. скомилировать с библиотекой статически
    2. поставить клиенту vs redistributable
    3. скопироварть run time библиотеки в дирректорию програмы

    p.s. не нужно забывать компилировать в release (msvcr90d.dll - debug run time)
     
  4. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    а где настроить, чтобы линковалось статически?
    какой параметр линкеру указать?
     
  5. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    мне тоже интересно :)
     
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    NoName
    о, пользуюсь случаем, вопрос: ну, как она, чем интересна?
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    UbIvItS
    я в ней пишу все свои дрова уже давно и так же ядро своей ОС. устраивает.
    довольно неплохо)
     
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    Great
    кстати, что за ОС? может ты в ней напишешь систему распределения прав между прогами? хотя, наверно, лучше для этого линь заюзать.
     
  9. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    UbIvItS
    Компилятор хорош (imho, лучший под Виндовс по качеству оптимизации). IDE - очень глючное.
     
  10. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Project - Configuration Properties - C\C++ - Code generation - Runtime library. Либо ключ компилятору - /MT (/MTd для дебажной версии).

    Ещё можно использовать динамическую rtl, но в готовом бинарнике заменить в хекс-редакторе строку "msvcr90.dll" на "msvcrt.dll" :rolleyes:
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    green
    надо ждать обновлений.
     
  12. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Sol_Ksacap
    Поставил ключ "MT" в настройках линкера (Runtime library). Но результат тот же самый :dntknw:
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    UbIvItS
    )
    ос просто для приобретения опыта, но не из серии "hello world защищенного режима", а полноценная ос, хотя бы на минимальном уровне. уже есть ядро с подсистемами - объектной, ввода-вывода, менеджером памяти, потоков, подгрузкой драйверов.. лан это не в тему немножко)
     
  14. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    подскажите все-таки как ЭТО сделать?
     
  15. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    http://rsdn.ru/forum/message/2456923.aspx
    http://nn1234.wordpress.com/2008/04/11/vc-90-msvcrtdll-windows-95/#respond
     
  16. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    NoName
    Я поставил в начало проекта
    Код (Text):
    1. #pragma comment(linker,"/NODEFAULTLIB")
    2. #pragma comment(linker,"/ENTRY:zmain")
    3. #pragma comment(linker,"/MERGE:.rdata=.text")
    4.  
    5. #pragma comment(lib,"ntdll.lib")
    6. #pragma comment(lib,"kernel32.lib")
    7. #pragma comment(lib,"user32.lib")
    8. #pragma comment(lib,"msvcrt.lib")
    9.  
    10. #pragma warning(disable: 4005)
    11. #include <windows.h>
    12. ............
    13. void zmain()
    14. {
    15. ........
    16. ExitProcess(0);
    17. }
    В настройках прокта надо ставить:
    С++->Code generation->Buffer Security Check:No
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Код (Text):
    1. #pragma comment(linker,"/NODEFAULTLIB")
    2. #pragma comment(linker,"/ENTRY:zmain")
    3. #pragma comment(linker,"/MERGE:.rdata=.text")
    4.  
    5. #pragma comment(lib,"ntdll.lib")
    6. #pragma comment(lib,"kernel32.lib")
    7. #pragma comment(lib,"user32.lib")
    8. #pragma comment(lib,"msvcrt.lib")
    НАсколько я помню, #pragma comment(lib, "XX") генерирует ключ линкера /DEFAULTLIB:XX и все эти либы ты отключаешь одним ключом /NODEFAULTLIB, который более "привилегированный". И ни одна либа не слинкуется из указанных. По крайней мере, так было в 6.0, не знаю насчет 9 (2008) - не пробовал
     
  18. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    поставил себе vc6.0 и прощай геморой :)
     
  19. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Зря, компилер в 2008 прикольный..
     
  20. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Не линкера. Эти ключи (/MT /MTd /MD /MDd (любой один из них)) - для компилятора ;-P
    И, по идее, просто для убирания зависимости от msvcrt90.dll ничего другого и не нужно.