Здравствуйте!
Можно ли в программе на Visual C++ 2005/2008 использовать не msvcr90.dll,а msvcrt.dll из \windows\system32\ в качестве CRT.Может нужно скачать какие-нибудь .h и .lib файлы???
Здравствуйте, Uzumaki Naruto, Вы писали:
UN>И да и нет... Можно ли поменять CRT — да можно, лежит ли он в system32 — нет не лжит, а ставится отдельно см. Platform SDK.
msvcrt.dll всегда лежит в system32 во всех Widows,поэтому-то я и хочу её использовать как CRT(для уменьшения размера программ,например)
Динамическая библиотека CRT лежит да — но вот какой версии — это уже вопрос — в каждой винде может быть своя.
Во вторых, что бы использовать любую DLLку при программировани — надо иметь хедеры и можеть быть библиотеку импорта — и для CRT их взять надо из Platform SDK — для 2000/XP/2003 — Platform SDK 2003.
CHG>А где их можно скачать(отдельно от остальных компонентов SDK)?Кстати,а какая CRT поставляется с WDK?Неужели драйверы используют msvcrXX.dll???
Правило хорошего тона для небольших программ — линковаться с CRT статически и вообще не требовать никаких msvcrXX.dll. Если размер который добавляет статическая CRT всё равно кажется большим — поищи по ключевым словам tinycrt + на сайте в статьях по-моему что-то было на тему как уменьшить размер модулей.
Здравствуйте, CHGenA, Вы писали:
CHG>Здравствуйте! CHG>Можно ли в программе на Visual C++ 2005/2008 использовать не msvcr90.dll,а msvcrt.dll из \windows\system32\ в качестве CRT.Может нужно скачать какие-нибудь .h и .lib файлы???
Вообще можно, взяв lib от 6й студии и запретив библиотеки по умолчанию.
Но на ваш страх и риск. Точно не будут работать исключения, проверки на переполнение массивов, большая часть STL. Вроде ещё какие-то проблемы возникали. Наигравшись с ключами компилятора можно заставить программу работать, но... нужно ли оно: фактически получится узкое подмножество С++ практически совпадающее с С. Причем невинное на 1й взгляд действие может сделать программу некомпилирующейся (что ещё более-менее хорошо) или не корректоно работающей.
Здравствуйте, lifrsdn, Вы писали:
L>Здравствуйте, CHGenA, Вы писали:
CHG>>Здравствуйте! CHG>>Можно ли в программе на Visual C++ 2005/2008 использовать не msvcr90.dll,а msvcrt.dll из \windows\system32\ в качестве CRT.Может нужно скачать какие-нибудь .h и .lib файлы???
L>Вообще можно, взяв lib от 6й студии и запретив библиотеки по умолчанию.
L>Но на ваш страх и риск. Точно не будут работать исключения, проверки на переполнение массивов, большая часть STL. Вроде ещё какие-то проблемы возникали. Наигравшись с ключами компилятора можно заставить программу работать, но... нужно ли оно: фактически получится узкое подмножество С++ практически совпадающее с С. Причем невинное на 1й взгляд действие может сделать программу некомпилирующейся (что ещё более-менее хорошо) или не корректоно работающей.
хмм. Может быть я конечно не прав, но тогда проще использовать ntdll и переопределить те ф-и кот. там нет.
Здравствуйте, hybride, Вы писали:
H>Здравствуйте, lifrsdn, Вы писали:
L>>Здравствуйте, CHGenA, Вы писали:
CHG>>>Здравствуйте! CHG>>>Можно ли в программе на Visual C++ 2005/2008 использовать не msvcr90.dll,а msvcrt.dll из \windows\system32\ в качестве CRT.Может нужно скачать какие-нибудь .h и .lib файлы???
L>>Вообще можно, взяв lib от 6й студии и запретив библиотеки по умолчанию.
L>>Но на ваш страх и риск. Точно не будут работать исключения, проверки на переполнение массивов, большая часть STL. Вроде ещё какие-то проблемы возникали. Наигравшись с ключами компилятора можно заставить программу работать, но... нужно ли оно: фактически получится узкое подмножество С++ практически совпадающее с С. Причем невинное на 1й взгляд действие может сделать программу некомпилирующейся (что ещё более-менее хорошо) или не корректоно работающей.
H>хмм. Может быть я конечно не прав, но тогда проще использовать ntdll и переопределить те ф-и кот. там нет.
Ну и как вы, например, переопределите функции поддержки С++ исключений? Боюсь спрашивать, причем тут вообще ntdll в частности и Native API вообще.
Здравствуйте, CHGenA, Вы писали:
CHG>Здравствуйте! CHG>Можно ли в программе на Visual C++ 2005/2008 использовать не msvcr90.dll,а msvcrt.dll из \windows\system32\ в качестве CRT.Может нужно скачать какие-нибудь .h и .lib файлы???
...
Любой зарегистрированный участник форумов RSDN.ru, непосредственно при просмотре сообщения, может дать ему одну из следующих оценок:
... — спасибо
...
RaiseException реализовано через RtlRaiseException
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, gear nuke, Вы писали:
GN>Здравствуйте, lifrsdn, Вы писали:
L>>Ну и как вы, например, переопределите функции поддержки С++ исключений?
GN>Visual C++ Exception-Handling Instrumentation
Можно так. Но потенциально это одна большая куча проблем.
L>>Боюсь спрашивать, причем тут вообще ntdll в частности и Native API вообще.
GN>RaiseException реализовано через RtlRaiseException
Согласен. Большая часть Win32API реализовано через NativeAPI. Но вот почему-то некоторые программисты используют всё таки Win32 для своих user-mode программ.
Здравствуйте, lifrsdn, Вы писали:
L>Можно так. Но потенциально это одна большая куча проблем.
Да, тут пожалуй первично, что нужно — создание проблем на пустом месте, или решение существующих. Так то всё это более-менее изучено и реализовано... тем же MS в DDK попадаются отдельные готовые либы.
L>Но вот почему-то некоторые программисты используют всё таки Win32 для своих user-mode программ.
Скорее большенство — лишние проблемы им не нужны. Но есть и лишенные прелестей подсистемы Win32, и тут опа.. им говорят — хотите не хотите, а пишите на С Да и кстати я там был очень краток, и не написал как оно реализовано... так что не проще с ntdll.
P.S. А вообще только и хотел ответить топикстартеру, что отнюдь не в каждой системе есть msvcrt.dll (в отличае от crtdll.dll) но забыл
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Здравствуйте, gear nuke, Вы писали:
L>>Но вот почему-то некоторые программисты используют всё таки Win32 для своих user-mode программ.
GN>Скорее большенство — лишние проблемы им не нужны. Но есть и лишенные прелестей подсистемы Win32, и тут опа.. им говорят — хотите не хотите, а пишите на С Да и кстати я там был очень краток, и не написал как оно реализовано... так что не проще с ntdll.
Это я к тому написал, что если есть Win32 фунцкия, то абсолютно необязательно ради непонятно чего звать Native. Возможно ирония прошла мимо. Что касается лишенных прелестей win32, то тогда вопрос про msvcrt.dll даже не встает, она завязана на kernel32.
GN>P.S. А вообще только и хотел ответить топикстартеру, что отнюдь не в каждой системе есть msvcrt.dll (в отличае от crtdll.dll) но забыл