Вопрос № 28054: Здравствуйте уважаемые эксперты. Не могли бы вы подсказать возможно ли в программе на С++ осуществить выполнение той или иной dll-функции? И если да то как это зделать?
Заранее благодарен....
Вопрос № 28.054
Здравствуйте уважаемые эксперты. Не могли бы вы подсказать возможно ли в программе на С++ осуществить выполнение той или иной dll-функции? И если да то как это зделать?
Заранее благодарен.
Отправлен: 21.10.2005, 11:27
Вопрос задал: Юра (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sager
Здравствуйте, Юра!
Не совсем понятен вопрос...
Создай новый проект и укажи, что ты создаешь Win32 Dynamic-Link Library. После компиляции ты получишь DLL,а потом создаешь простой экзешник и юзаешь функции.
Еще можно выполнить функцию dll на лету(прописав это в экзешнике):
HINSTANCE hLib=LoadLibrary("DLLTEST.DLL");
HANDLE func = GetProcAddress((HMODULE)hLib, "имя_функции");
Ответ отправил: Sager (статус: 10-ый класс)
Отправлен: 21.10.2005, 16:33 Оценка за ответ: 5
Отвечает: Jadd
Здравствуйте, Юра!
А среда какая? Если MSVC,тогда там есть три варианта. Первый, как вам уже описали. Второй - это статическая линковка, когда к проекту прилинковывается lib-файл, а в проекте используется h.-файл с объявлениями функций из dll. Третий и самый простой способ - использовать MFC-extention dll. Суть втом, что там вообще почти ничего не нужно делать, кроме самого программинга функций и классов. Просто юзаете свои функции и классы, а компиллер сам соберет и dll, и экзешник. Выберайте удобный Вам вариант.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 21.10.2005, 16:48 Оценка за ответ: 5
Отвечает: estiGi
Здравствуйте, Юра!
Что значит - возможно ли? А как бы иначе работали программы? Если, конечно, я правильно понял вопрос.
В длл можно хранить и ресурсы, и функции, и классы. И их можно использовать как из ехе, так и из другой длл.
Длл можно подключить напрямую (Неявное связывание) -
#pragma comment (lib, "mydll.lib")
тогда можно вызывать функции напрямую, по имени. Но они должны быть объявлены экспортируемыми внутри длл, а вызывающий модуль должен объявить их импортируемыми.
Или можно вызвать и выполнить функцию напрямую, см. приложение
Приложение:
Ответ отправил: estiGi (статус: 2-ой класс)
Отправлен: 21.10.2005, 23:57