Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файл с расширением- dll? 
:(
    Опции темы
mister2010
Дата 29.5.2010, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Объясните русским языком ,что такое файл длл?
Почему при написании самого  длл на WINAPI, нужно прописать такое в проекте.
plugin.hpp - это что за файл и зачем он нужен?
И ещё нужно создавать файл с расширением .def, почему?

Это сообщение отредактировал(а) mister2010 - 29.5.2010, 16:40
PM MAIL   Вверх
Dem_max
Дата 29.5.2010, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



Цитата

Объясните русским языком ,что такое файл длл?

Это подключаемый модуль содержащий функции (исполняемый код), ресурсы (картинки, музыка и др.)

Цитата

Почему при написании самого  длл на WINAPI, нужно прописать такое в проекте.
plugin.hpp - это что за файл и зачем он нужен?

Нет, ничего такого не нужно прописывать, просто нужно создать новый проект и выбрать "Динамическая библиотека"

Цитата

И ещё нужно создавать файл с расширением .def, почему?

не обязательно, .def файл нужен если только необходимо переопределить экспортируемое имя функции из DLL, так как все компиляторы создают различное имя экспортируемой функции.
Правильные имена функций создают компиляторы от Борланда, компиляторы от майкрософта неправильные, поэтому там используется .def для переопределения имени функции.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
mister2010
Дата 29.5.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Вот встретил такой код в файле деф, расшифруйте его пожалуйста, что означает этот код в файле с расширением деф.
Код

LIBRARY
EXPORTS
GetPluginInfoW=_GetPluginInfo@4
OpenPluginW=_OpenPlugin@8
SetStartupInfoW=_SetStartupInfo@4

Код

Это подключаемый модуль содержащий функции (исполняемый код), ресурсы (картинки, музыка и др.)

Подключаемый модуль куда в plugin.hpp или в Far.exe?


Правильно ли я понимаю, когда я кидаю в папку портат.программу.Фар где лежит файл Far.exe, кидаю файл длл, при запуске программы Far.exe, файл far.exe вызывает файл plugin.hpp, а plugin.hpp  вызывает файл моего длл, например slava.dll ?

Это сообщение отредактировал(а) mister2010 - 29.5.2010, 17:46
PM MAIL   Вверх
GoldFinch
Дата 29.5.2010, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



mister2010, вам еще рано заниматься программированием. 
Сначала изучите ОС которой пользуетесь.
PM MAIL ICQ   Вверх
Dem_max
Дата 29.5.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



Цитата

LIBRARY
EXPORTS
GetPluginInfoW=_GetPluginInfo@4
OpenPluginW=_OpenPlugin@8
SetStartupInfoW=_SetStartupInfo@4


LIBRARY - говорит что это у нас DLL, экспортировать функции может и EXE
EXPORTS говорит что мы экспортируем функции
GetPluginInfoW=_GetPluginInfo@4 - переопределение имени функций 
компилятор от MS генерит имена как GetPluginInfo@4, но в итоге нужно получить правильное имя ввиде GetPluginInfo, или можно вообще поменять имя на  GetPluginInfoW.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
mister2010
Дата 29.5.2010, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



1)Что означает первый знак подчёркивания в этом _GetPluginInfo@4 И что означает @4
А во второй строке OpenPluginW=_OpenPlugin@8        @8?

Вы говорили что можно так написать GetPluginInfoW=_GetPluginInfoW
Так не работает.

2)Файл експорта нужен для переопределения функций описанных в файле plugin.hpp?



PM MAIL   Вверх
Леопольд
Дата 29.5.2010, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



mister2010
Цитата(GoldFinch @  29.5.2010,  17:44 Найти цитируемый пост)
Сначала изучите ОС которой пользуетесь. 




--------------------
вопросов больше чем ответов
PM MAIL   Вверх
mister2010
Дата 29.5.2010, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Ответьте пожалуйста на вопрос последний.
PM MAIL   Вверх
GoldFinch
Дата 29.5.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



mister2010
исполняемые файлы программы, в том числе и длл строятся из .cpp файлов.
.hpp и .h файлы - это части .cpp
компилятор их не различает, и не может определить какие функции длл экспортируются, в .hpp они или нет.
по этому при сборке длл надо предоставлять отдельный список экспортируемых функций, в .def файле
(либо надо помечать функции __declspec(dllexport) в коде)

Добавлено через 4 минуты и 14 секунд
в записи "_OpenPlugin@8"
_  - указывает соглашение вызова, stdcall
@8  - число параметров умноженное на 4

вообще-то можно не писать
имя = _имя@N
а писать в .def файл только имена экспортируемых функций
PM MAIL ICQ   Вверх
mister2010
Дата 29.5.2010, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 25.5.2010

Репутация: нет
Всего: нет



Каким образом 10 програм запущенных на компе могут пользоватся одним длл
PM MAIL   Вверх
djamshud
Дата 29.5.2010, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39





--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0700 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.