![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Mach3 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 26.11.2005 Репутация: нет Всего: 2 |
Пытаюсь создать DLL и использовать ее функцию.
ДРКБ читал, листал,но как обычноничего не получилось. Вобщем, чего наваял (т.е. скопипастил):
Вроде, все как по учебнику, но при компиляции: ![]() Это сообщение отредактировал(а) Mach3 - 17.3.2011, 17:51 --------------------
Век живи - век учись... |
||||
|
|||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
что-то я не понял, ты форму засунул в dll?
или unit1 из отдельного приложения все-таки? Это не при компиляции выдается, а при попытке запуска dll. -------------------- There are always someone smarter than you... |
|||
|
||||
| Mach3 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 26.11.2005 Репутация: нет Всего: 2 |
Нет. В длл должна быть просто процедура HelloWorld.
Вроде сообразил.. Сейчас проверим.. А чего за ошибка-то? Чего говорит? Это сообщение отредактировал(а) Mach3 - 17.3.2011, 18:14 --------------------
Век живи - век учись... |
|||
|
||||
| cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 2 Всего: 15 |
Она говорит о том, что ты пытаешься запустить dll файл в качестве исполняемого модуля. Это физически сделать не возможно. Однако возможно написать клиента этой dll (т.е. exe приложение которая использует интерфейс экспортируемых методов), прописать путь к нему в RUN->PARAMETERS->HOST APPLICATION, тогда среда может запускать твоё приложение и длл по F9
|
|||
|
||||
| Mach3 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 26.11.2005 Репутация: нет Всего: 2 |
Не расскажите, что за предупреждение?
В ДЛЛ хочу засунуть функции парсеров. Возвращать должны переменные типа TStringlist. --------------------
Век живи - век учись... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
Mach3, А почитать, что написано - не? Вкратце: Если хочешь передавать строки, будь добр, пользуй ShareMem. Это же вроде бы касается и передачи экземпляров классов в/из длл.
-------------------- There are always someone smarter than you... |
|||
|
||||
| Mach3 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 26.11.2005 Репутация: нет Всего: 2 |
Так я и почитал.. =))
Увидел предупреждение насчет строковых переменных, вот и спросил. (Английский не на уровне..) Только что передал функции ДЛЛ string, вернуло TStringList.. Все отлично. В чем подвох-то? --------------------
Век живи - век учись... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
Mach3, у тебя еще все впереди ;) Но если не добавил ShareMem, то уже совсем скоро будет это "впереди". А вообще советую сходить на популярные ресурсы и почитать статейки про DLL, чтобы не задавать глупых вопросов.
Это сообщение отредактировал(а) MetalFan - 17.3.2011, 19:30 -------------------- There are always someone smarter than you... |
|||
|
||||
| cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 2 Всего: 15 |
Вкратце объясню:
Если не использовать ShareMem, то как в клиента так и в dll вкомпиливается стандартный мэнеджер памяти. Т.е. в контексте основного процесса будет два мэнеджера памяти, определяющих свои адресные подпространства. Но код RTL, генерируемый компилятором, при работе с объектами с управляемым временем жизни, универсален. Он ничего не знает о наличие двух разных мэнеджеров памяти (предполагает, что работает с одним), потому может честно попросить какой - то из мэнеджеров, освободить объект, созданный другим мэнеджером, в связи с чем первый не сможет этого сделать. В этом случае могут иметь место, как исключительные ситуации, так и утечки памяти |
|||
|
||||
| Mach3 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 26.11.2005 Репутация: нет Всего: 2 |
Страшнее НЕ задать этот глупый вопрос, ибо может сложиться неверное понимание у таких новичков как я. А данный ресурс, думаю, ориентирован не только на продвинутых гуру. Спасибо. --------------------
Век живи - век учись... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
Mach3, зачем задавать ЭЛЕМЕНТАРНЫЕ вопросы на темы, по которым уже есть ПОДРОБНЫЕ статьи, в которых ВСЕ расжевано?
Или влом искать/читать, типа "нафиг надо, лучше пусть знающие еще раз статью мне тут быстренько перескажут, им же больше заняться нечем" -------------------- There are always someone smarter than you... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |