Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Файл с расширением- dll? |
Автор: mister2010 29.5.2010, 16:39 |
Объясните русским языком ,что такое файл длл? Почему при написании самого длл на WINAPI, нужно прописать такое в проекте. plugin.hpp - это что за файл и зачем он нужен? И ещё нужно создавать файл с расширением .def, почему? |
Автор: Dem_max 29.5.2010, 17:24 | ||||||
Это подключаемый модуль содержащий функции (исполняемый код), ресурсы (картинки, музыка и др.)
Нет, ничего такого не нужно прописывать, просто нужно создать новый проект и выбрать "Динамическая библиотека"
не обязательно, .def файл нужен если только необходимо переопределить экспортируемое имя функции из DLL, так как все компиляторы создают различное имя экспортируемой функции. Правильные имена функций создают компиляторы от Борланда, компиляторы от майкрософта неправильные, поэтому там используется .def для переопределения имени функции. |
Автор: mister2010 29.5.2010, 17:41 | ||||
Вот встретил такой код в файле деф, расшифруйте его пожалуйста, что означает этот код в файле с расширением деф.
Подключаемый модуль куда в plugin.hpp или в Far.exe? Правильно ли я понимаю, когда я кидаю в папку портат.программу.Фар где лежит файл Far.exe, кидаю файл длл, при запуске программы Far.exe, файл far.exe вызывает файл plugin.hpp, а plugin.hpp вызывает файл моего длл, например slava.dll ? |
Автор: GoldFinch 29.5.2010, 17:44 |
mister2010, вам еще рано заниматься программированием. Сначала изучите ОС которой пользуетесь. |
Автор: Dem_max 29.5.2010, 17:52 | ||
LIBRARY - говорит что это у нас DLL, экспортировать функции может и EXE EXPORTS говорит что мы экспортируем функции GetPluginInfoW=_GetPluginInfo@4 - переопределение имени функций компилятор от MS генерит имена как GetPluginInfo@4, но в итоге нужно получить правильное имя ввиде GetPluginInfo, или можно вообще поменять имя на GetPluginInfoW. |
Автор: mister2010 29.5.2010, 18:04 |
1)Что означает первый знак подчёркивания в этом _GetPluginInfo@4 И что означает @4 А во второй строке OpenPluginW=_OpenPlugin@8 @8? Вы говорили что можно так написать GetPluginInfoW=_GetPluginInfoW Так не работает. 2)Файл експорта нужен для переопределения функций описанных в файле plugin.hpp? |
Автор: Леопольд 29.5.2010, 19:11 |
mister2010, |
Автор: mister2010 29.5.2010, 19:16 |
Ответьте пожалуйста на вопрос последний. |
Автор: GoldFinch 29.5.2010, 19:25 |
mister2010, исполняемые файлы программы, в том числе и длл строятся из .cpp файлов. .hpp и .h файлы - это части .cpp компилятор их не различает, и не может определить какие функции длл экспортируются, в .hpp они или нет. по этому при сборке длл надо предоставлять отдельный список экспортируемых функций, в .def файле (либо надо помечать функции __declspec(dllexport) в коде) Добавлено через 4 минуты и 14 секунд в записи "_OpenPlugin@8" _ - указывает соглашение вызова, stdcall @8 - число параметров умноженное на 4 вообще-то можно не писать имя = _имя@N а писать в .def файл только имена экспортируемых функций |
Автор: mister2010 29.5.2010, 22:20 |
Каким образом 10 програм запущенных на компе могут пользоватся одним длл |
Автор: djamshud 29.5.2010, 22:33 |
RTFM! http://en.wikipedia.org/wiki/Dynamic_linking http://en.wikipedia.org/wiki/Dynamic-link_library |