Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

dllimport (C++Builder 5)

Привет!

Вот такой у меня вопрос
Почему вот такое работает (создается dll'ка и все просто супер)
extern "C" float __declspec(dllexport) SQR(float x);

А если написать вот так
extern "C" float __declspec(dllimportt) SQR(float x);

То при компиляции проекта с этой dll'кой выдается такая ошибка
[Linker Error] Unresolved external '_SQR' referenced from C:\WINDOWS\...\UNIT1.OBJ

P.S.
Где можно почитать про dll ?
Что такое __declspec(dllexport) и __declspec(dllimportt) ?
Номер выпуска : 3272
Возраст листа : 268 (дней)
Количество подписчиков : 420
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/171032
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписать : mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Wed, 16 Jun 2004 12:12:44 +0400 (#171032)

 

Ответы:

Win32)

On Wed, 16 Jun 2004 12:12:44 +0400
"Envoy" <envoy***@m*****.ru> wrote:

Все просто, если ты пишешь dllexport, то это значит, что ты экспортируешь функцию
из DLL, и она будет "видна" программам, которые захотят твою дллку использовать
(для нее будет создана точка входа).

Если же ты пишешь dllimport, то это значит, что ты хочешь импортировать функцию
из другой DLL. При этом ты должен подключить соответствующую lib.

Обычно делается так. Если ты пишешь длл, то в заголовочном файле пишешь макрос:

#ifdef MY_COOL_DLL
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

extern "C" float MY_COOL_DLL SQR(float x);

При компиляции длл, в настройках проекта определяешь макрос MY_COOL_DLL, и MYDLL_API
будет заменяться на export. У когда кто-нибудь будет подключать твою длл, то
он подключит заголовочный .h и библиотечный .lib файлы. Но у него то макрос MY_COOL_DLL
не определен (скорее всего :)), поэтому у него вместо MYDLL_API бедет подствлена
директива для импорта.

Вот в кратце и все.

Ответить   Alexander Artemenko Wed, 16 Jun 2004 17:13:28 +0400 (#171725)