Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > исключение msvcrtd.dll


Автор: AxNe0 28.6.2006, 17:45
Всем привет!
Есть проблема - программа при запуске требует библиотеку msvcrtd.dll. Как можно исправить код, чтобы программа работала без всех библиотек? 

Автор: NiJazz 28.6.2006, 20:02
AxNe0, в свойствах проекта:
С/С++ -> Code Generation -> Runtime library: выстави значение, аналогичное старому, но без DLL. То есть если было, к примеру, Multi-threaded DLL, то сделай Multi-threaded.
Это для VC++ 7.Х
Не забудь написать, помогло или нет. 

Автор: AxNe0 29.6.2006, 10:13
Прошу прощения, забыл указать среду - у меня VC++ 6.0. Этот способ не помог smile В свойствах стоит Single-threaded 

Автор: NiJazz 29.6.2006, 10:21
AxNe0, попробуй выставить Multi-threaded. Возможно, твоё приложение многопоточное, а ты используешь не тот рантайм. 

Автор: Earnest 29.6.2006, 13:43
По-моему, это библиотека от debug-версии. Скомпилируй релиз. 

Автор: bel_nikita 29.6.2006, 17:04
AxNe0, 
копай в сторону Link/Project Options:  /nodefaultlib:"msvcrtd.lib"
Еще могешь прописать /VERBOSE и увидишь все либы используемые проектом  

Автор: AxNe0 30.6.2006, 11:55
При попытке создания релиза - не хватает библиотеки nafxcw.lib, после того, как поставил ее, появляются ошибки:
Цитата

nafxcw.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcw.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex



bel_nikita, /nodefaultlib:"msvcrtd.lib" тоже не помогает
smile(( 

Автор: NiJazz 30.6.2006, 12:04
Говорю еще раз: выстави Multi-threaded! 

Автор: AxNe0 30.6.2006, 12:19
Сорри, вначале, когда поставил -  почему-то не работало, сейчас вродь как работает, но еще проверить надо бы smile Спасибо!

Добавлено @ 12:31 
теперь при запуске на компе без визуала, требуется библиотека MFC42D.DLL, как можно от этой "гадости" избавиться? 

PS В Project Settings стоит "Not Using MFC"... 

Автор: bel_nikita 30.6.2006, 14:17
Цитата(AxNe0 @ 30.6.2006,  11:19)
теперь при запуске на компе без визуала, требуется библиотека MFC42D.DLL, как можно от этой "гадости" избавиться? 

PS В Project Settings стоит "Not Using MFC"...

Походу никак. скорее всего сторонняя либа цепляет MFC42D.DLL. Посмотри внимательно, чтобы проект в релизе  подключал релизные либы, а в дебаге - дебажные.  

Автор: Earnest 30.6.2006, 15:56
Именнно, MFC42D.DLL - то опять debug-библиотека. Single-thread, Multithread - неважно, главное, чтобы все используемые библиотеки использовали одну модель. 
Опцию Not Using MFC лучше не ставить, она годится только если ты вообще не используешь DLL  - иначе правильную версию CRT не подключишь. Выбери Use MFC as Multithread DLL (или Single Thread, в зависимости от потребностей). Кода в приложение это тебе не добавит, а релизные MFC-библиотеки обычно в Windows уже есть. 

Автор: 0x07L 30.6.2006, 20:15
 smile По случаю, если можно, задам давно интересующий меня вопрос. Чем различаются single- и multithread версии? Когда какую нужно использовать?  

Автор: En_t_end 30.6.2006, 20:32
Earnest, 
Цитата(Earnest @  30.6.2006,  19:56 Найти цитируемый пост)
Single-thread, Multithread - неважно,

не скажи.
 

Автор: Earnest 1.7.2006, 17:44
Цитата(En_t_end @  30.6.2006,  21:32 Найти цитируемый пост)
Earnest, 

Цитата(Earnest @  30.6.2006,  19:56 )
Single-thread, Multithread - неважно,
не скажи.
  

Не важно в смысле поднятой проблемы.
Цитата(0x07L @  30.6.2006,  21:15 Найти цитируемый пост)
Чем различаются single- и multithread версии? Когда какую нужно использовать? 

Если приложение не создает потоков (кроме главного), и не подключает DLL, которые это делают (включая всякие чужие ActiveX), то можно использовать однопоточную (single) модель.
Многопоточная модель, как следует из названия, потокобезопасна, т.е. там есть всякие синхронизации и прочее. Но это не бесплатно, так что если не нужно - то не нужно и Multithread. Хотя, приложения имеют тенденцию расти, и рано или поздно, поток завести захочется... Так что, наверное, имеет смысл всегда подключать Multithread.
 

Автор: 0x07L 1.7.2006, 18:53
Earnest, очередной раз большое спасибо! 

Автор: AxNe0 3.7.2006, 10:22
Всем большое спасибо!  smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)