Re[4]: Использование DLL в программе на Visual C++
От: Alexander Shargin Россия RSDN.ru
Дата: 30.03.04 11:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Что касается "все работало" — здесь есть небольшие сложности. Да, все работает. Но! Если Вы используете функции уведомления состояния загрузки (helper-функции)... точнее, пытаетесь их использовать, то здесь начинается самое интересное. Мне не совсем, например, очевидно (ламер? ), КАК можно скомпилировать static library (а M$ это сделали!), чтобы не нарушалось правило одного определения (при условии, что а) либо мы ОПРЕДЕЛЯЕМ указатели на helper-функции в явном виде б) или не ОПРЕДЕЛЯЕМ их вообще) — т.е. так, как это делается при использовании "официального" lib-файла с официальным же DelayImp.h!


А>Буду признателен за идеи?!


Есть такое понятие как "weak external" — это символ, который используется линкером, если он не был определён в других модулях. А если был, линкер игнорирует weak external и не ругается. Например, символы new, delete и DllMain используются и в CRT, и в MFC, но благодаря тому что в CRT они weak externals, всё линкуется как надо (до тех пор пока MFC линкуется раньше CRT, если они случайно поменяются местами, сразу получим кучу ошибок). Думаю, этот механизм используется и в delayimp.lib.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.