|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.06.2011, 17:25 | #1 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Передать процедуры и функции из одной DLL в другую
Есть dll, назовем A, в ней определенные функции и процедуры. Программа, основная, загружает и инициализирует и присваивает к своим переменным то, что есть в dll A. Их будет использовать кроме программы и другие подключаемые к программе dll, как можно это сделать, без вреда программе? И например, при передачи процедур и функций, они есть только внутри самой программы, из программы в DLL, к ним нужна приписка stdcall?
Demo: Код:
Код:
Последний раз редактировалось Alter; 10.06.2011 в 18:11. |
10.06.2011, 20:26 | #2 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Вроде как правильно сделал, AV не вылетало, данные верно давало. Гуру поглядите, на всякий случай, все ли нормально. Может еще кому то пригодится.
|
11.06.2011, 12:34 | #3 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Цитата:
Грубая ошибка налицо: Код:
|
|
11.06.2011, 13:41 | #4 | |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Цитата:
|
|
11.06.2011, 16:13 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
11.06.2011, 16:56 | #6 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Цитата:
Вызывающий библ.ф-цию код не знает и не обязан знать ничего о конкретном менеджере памяти, выделевшем блок под возвращаемую строку. Т.е. освободить этот блок вызывающий код не сможет при необходимости, а если dll будет выгружена, то и того хуже - код, получивший адрес строкового блока из dll, рискует схлопотать AV. Идеальное решение - вызывающий код САМ должен выделить блок памяти нужного размера и передать параметром адрес и размер этого блока. Если же параметром передается nil, вызываемая ф-ция возвращает размер блока, необходимого для размещения строки. Именно такое решение фигурирует очень часто во многих WinAPI-вызовах. |
|
11.06.2011, 17:00 | #7 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
11.06.2011, 20:35 | #8 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Вариант 2
Код:
mss, так и не увидел от вас конкретного примера, только вокруг, да около. Последний раз редактировалось Alter; 11.06.2011 в 20:51. |
11.06.2011, 22:22 | #9 | |||
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Цитата:
Ты хоть задумался что происходит при StrPCopy ? Цитата:
Может в самую пору на время бросить слепые писательские потуги и углубиться в штудирование справочников и документации по этой теме ? Цитата:
Код:
Последний раз редактировалось Stilet; 12.06.2011 в 11:35. |
|||
11.06.2011, 22:40 | #10 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Alter, держи один из вариантов: Код:
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 11.06.2011 в 22:46. |
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как правильно передать несколько разнородных данных из одной формы в другую? | tumanovalex | C# (си шарп) | 2 | 21.05.2011 10:05 |
Как передать значение пременной из одной функции в другую? | mr.-parker | Общие вопросы C/C++ | 2 | 27.03.2010 15:01 |
C#: Передать значение переменной из одной формы в другую | Veiron | Общие вопросы .NET | 3 | 29.06.2009 17:43 |
из одной процедуры в другую... | Vremya-Dengy | Общие вопросы Delphi | 10 | 09.03.2009 23:51 |
DLL + Процедуры(не функции) | LEKA | Общие вопросы Delphi | 1 | 02.05.2007 20:37 |