Динамическое подключение DLL в Visual C++

Форум для программистов

Сообщение mamon » Вт май 18, 2004 9:40 pm

Доброго времени суток...
Есть такая задачка:
В каком-нибудь ini-шнике есть несколько строк с именами библиотек.
В библиотеках есть функции и данные. Нужно по выбору использовать функцию из одной из библиотек.
То-ли я неправильно пишу библиотеки, то-ли основной модуль (что более вероятно).
Я использую конструкции _declspec( dllinport ) и _declspec( dllexport ) в библиотеках. Как так нужно написать, чтобы компилятор не ругался на unresolved external и т.д???
Как-то MSDN мне не помог Изображение
Заранее спасибо.
mamon
Сержант
 
Сообщений: 34
Зарегистрирован: Сб дек 13, 2003 1:02 am
Пункты репутации: 0

Сообщение Scalder » Ср май 19, 2004 5:09 am

2mamon
<a href='http://codeproject.com/dll/' target='_blank'>http://codeproject.com/dll/</a>

удачи :)
<!--coloro:green--><span style="color:green"><!--/coloro-->А что я не так сказал?<!--colorc--></span><!--/colorc-->
<!--coloro:red--><span style="color:red"><!--/coloro-->А ты как думал? Конечно это ИМХО<!--colorc--></span><!--/colorc-->

<!--coloro:red--><span style="color:red"><!--/coloro-->>В каждом системном администраторе есть что-то от Бога.<!--colorc--></span><!--/colorc-->
В каждом программисте есть что-то от Бога для Бога. :-р
<a href="http://www.erepublik.com/en/referrer/mrScalder" target="_blank">Изображение</a>
Scalder
Генерал-майор
 
Сообщений: 2587
Зарегистрирован: Пн апр 08, 2002 10:21 am
Пункты репутации: 0

Сообщение FimanAuthor » Ср май 19, 2004 6:52 pm

И так через эти конструкции ты не сможешь нормально импортировать!(речь идет о VC++)
надо использовать файл .def.

вот пример
dll.c
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->int WINAPI Add(int val)
{
  return ++val;
}
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->

dll.def
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->EXPORTS
  Add
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->


Вот теперь чтобы взять адрес:
prg.cpp
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->typedef int (WINAPI *F_ADD)(int val);

F_ADD Add = (F_ADD)GetProcAddress(hDLL, "Add");
int i = 0;
Add(i);
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->

Должно работать.
Последний раз редактировалось FimanAuthor Ср май 19, 2004 6:54 pm, всего редактировалось 1 раз.
FimanAuthor
Прапор
 
Сообщений: 71
Зарегистрирован: Чт мар 18, 2004 5:50 am
Откуда: Россия
Пункты репутации: 0


Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron