![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Foley |
|
||||
![]() Фсемба Яцца ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 31.1.2006 Где: Россия, Арх.обл Репутация: нет Всего: 7 |
Несколько вопросов про DLL:
1. Как мне подмтавить в ДЛЛ свое значение? (см. код) 2. Что за ошибка выскакивает при использовании String в ДЛЛ: Invalid pointer operation? Теория: 3. Чем отличается статистическая загрузка от динамической? 4. Преимущества использования ДЛЛ. 5. Операторы ДЛЛ (или как правильно называются) типа stdcall, far и т.п. с описанием на русском языке. 3, 4, 5 если можно дайте ссылки, только чтоб там понятно описано было. код ДЛЛ
код юниты:
|
||||
|
|||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 23 Всего: 459 |
после создания dll появляетя текст
который говорит о том что нужно подключить модуль ShareMem для передачи строк в качестве параметров и получения их в виде результата(для экспортируемых функций) -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 1 Всего: 50 |
1. Уточни вопрос
2. Когда создаеь DLL там написано { Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. } т.е. чтобы использовать тип string надо добавить в uses проекта программы и dll модуль ShareMem (поставить его первым), плюс к этому нужна еще dll BORLNDMM.DLL а вообще лучше вместо String использовать PChar 3. Статист. загружается при старте программы, выгружается с ней вместе динамическая - сам отвечаешь за загрузку и выгрузку 4. написание плугинов и тд и тп 5. Есть такая вещь как поиск. ya.ru rambler.ru итд http://ad.cctpu.edu.ru/SSP/Prof/Glava28/Index4.html а там Далее Далее ... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 23 Всего: 459 |
Статическую не нужно ни загружать ни выгружать. Динамическая загрузка подразумевает не только загрузку и выгрузку но и определение адресов используемых функций Заморочки много а эффект есть если используются много разных библиотек и требуются они в разное время работы программы или редко. Например при создании плагинов. Грузится в начале ядро а библиотеки по мере необходимости. Хороший пример статической загрузки это ядро (kernel.dll ,gdi.dll и тд )windows, которое грузится автоматически при запуске любой программы на delphi (или почти любой). -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 4 Всего: 111 |
Странные какие то у тебя dll'ки |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 23 Всего: 459 |
Yanis, ладно уже ошибся чуток. Вот более точно
advapi32 = 'advapi32.dll'; kernel32 = 'kernel32.dll'; mpr = 'mpr.dll'; version = 'version.dll'; comctl32 = 'comctl32.dll'; gdi32 = 'gdi32.dll'; user32 = 'user32.dll'; -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 4 Всего: 111 |
alexeis1,
Не в обиду сказано ;) |
|||
|
||||
| Foley |
|
|||
![]() Фсемба Яцца ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 31.1.2006 Где: Россия, Арх.обл Репутация: нет Всего: 7 |
ну вот
и воопще возможно ли это? Со вторым вопросом я разобрался...3, 4 понял объяснение а вот про stdcall по ссылке ниче не понятно, но все равно спасибо Добавлено @ 23:12 ой поторопился понял все... |
|||
|
||||
| Foley |
|
||||
![]() Фсемба Яцца ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 31.1.2006 Где: Россия, Арх.обл Репутация: нет Всего: 7 |
все понял сам где собака зарыта:
а надо было:
правильно говроится, что чем глупее ошипка тем труднее ее найти... Всем спасибо... |
||||
|
|||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |