PDA

Просмотр полной версии : Компилятор


77org77
15.06.2010, 11:52
Всем доброе время суток. Уменя возник такой вопрос по C++ как можно зделать чтобы при статическом подключении библиотеки, невылеслиазила ошибка если библиотеки нету,. а белать своё какое небуть действия. я так понял она сразу идет проверка при загрузки приложения как можно этого избезать. Компилятор Microsoft_Visual_Studio_9.0 OC windows XP sp3.За рание спасибо.

1n0y
15.06.2010, 12:05
надеюсь код ты пишешь грамотнее, чем посты на форуме..

Ra$cal
15.06.2010, 13:01
гг =) расшифруйте кто нить послание ТС.

EniOk
15.06.2010, 13:12
Я так понял... У человека возникает ошибка при компиляции - невозможно подключить такую-то библиотеку. Он спрашивает как не обрывать компиляцию на этой ошибке, а выполнить что-либо.

Имхо - условная компиляция рулит)
#ifdef, #if - #endif помочь могут)

Sunzer
15.06.2010, 13:16
Может быть ТС хочет что бы его бинарь не импортировал msvcrt.dll?

d_x
15.06.2010, 14:10
Расшифровывою: тс билдит бинарник, использующий, например, pcre3.dll или curl.dll. Потом при распространении бинарника прикладываемая dll'ка куда-то теряется, и при запуске приложения вылазит нечто вроде
http://s48.radikal.ru/i122/1006/86/6b92ea85389b.png

Вопрос тс'а: можно ли как-то эту ошибку перехватить и сделать что-то своё вместо этого месажбокса.

greki_hoy
16.06.2010, 13:48
отложенная загрузка библиотек (у Рихтера) или явная загрузка (LoadLibrary) тогда можно какое угодно свое сообщение показать а при неявном связывании загрузчик показывает это сообщение еще даже когда первичный поток не исполнил ни одной инструкции вашей программы

77org77
16.06.2010, 21:51
Всё ясно, напишу по-другому, при запуски приложения вылетает ошибка что мол нету *.dll когда я копирую эту *.dll в системную директорию то шибка не вылетает а работает нормально. Вопрос как мне можно сделать так чтоб вместо этой ошибки (отсутствия dll) он сперва копировал её с сервера, а потом только уже запускал приложение???

Gar|k
16.06.2010, 22:26
мне кажется, коллеги, ТС все таки про CRT :)

Ra$cal
16.06.2010, 22:30
вобщем никак, если линковка компилем происходит. ибо запись о библиотеке пишется в Import часть PE хидера. Если хочешь подгружать - значит вызов функций делать надо через LoadLibrary и GetProcAddress, а это гемор. Так что просто кидай dll прямо в папку с программой и пакуй так.

greki_hoy
16.06.2010, 23:12
или такой извращенский способ
пишеш exe ему в виде бинарных ресурсов вкомпиливаеш основной exe и нужные .dll когда пускач стартанет распакует все dll и основной exe и запустит его а сам удалится с диска
но имхо не проще ли инсталлятор сделать ?

77org77
16.06.2010, 23:12
Всё понял спасибо.