Вызов произвольной процедуры из произвольной DLL

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
AnDS
Активист
Сообщения: 119
Зарегистрирован: 03 Ноябрь 2005, 9:32

Вызов произвольной процедуры из произвольной DLL

Сообщение AnDS »

Уважаемые коллеги.

Поделитесь идеями, как реализовать такую штуку, как вызов произвольной процедуры из произвольной DLL.
Поясню:
DLL подгружаем функцией LoadLibrary
получаем адрес процедуры по имени: GetProcAddress(DLLInstance,ADDRESS(ProcName))
а вот дальше... возникает непонятка, как корректно эту процедуру/функцию вызвать?
заранее я не знаю, что это будет за функция, какие у нее параметры... эта информация известна только на этапе выполнения программы.

Если бы прототип был известен, то все просто. Но...

Заранее благодарю за ответ.

ЗЫ. Мне тут подсказывают, что может на ассемблере написать обвязку или на Си...
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Re: Вызов произвольной процедуры из произвольной DLL

Сообщение StillZero »

полагаю, что вызвав неизвестно что, результат будет неизвестен :)
потому, думаю, что прототип все таки известен, да и мало того, что надо знать прототип, так надо еще и что то передать, и желательно видимо не хуйню какую нибудь :)
по аэродрому...
AnDS
Активист
Сообщения: 119
Зарегистрирован: 03 Ноябрь 2005, 9:32

Re: Вызов произвольной процедуры из произвольной DLL

Сообщение AnDS »

СТОП!
Возможно я неточно выразился в предыдущем посте?

На момент написания программы прототипы неизвестны (вернее, их может быть конечное кличество, но очень большое)
А вот на момент выполнения программы конечно прототипы известны.
Так вот хочется (уже зная прототипы) в процессе выполнения программы вызывать эти процедуры.
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Re: Вызов произвольной процедуры из произвольной DLL

Сообщение StillZero »

похоже на вот это:
Calling By Address, STARTing By Address, это ClaMag 2001, 11 месяц
http://clarionmag.com/cmag/v3/v3n11byaddress1.html

но имхо какое то неверное направление, допустим, что прототип MyReport(LONG inStoreID), т.е. процедура просит код склада, в твоей "вызывающей программе", вообще нет такого понятия как "код склада", т.е. ты не можешь вызвать эту процедуру... к чему я...? один черт, чтобы вызвать, надо знать что вызываешь

есть пара вариантов, когда это не важно, например MyBrowse(Params) и MyAdvancedBrowse(Params) или MyMoreCoolBrowse(Params), т.е. разные браузы, С ОДНИМ И ТЕМ ЖЕ набором параметров, либо, вызов процедуры вообще без параметров, но в этих случаях ты все равно ЗНАЕШЬ прототип, но не знаешь имя процедуры...

для поставки разным клиентам разных dll, головной модуль один черт знает что он хотел бы вызвать, а если этого нет, т.е. нет возможности загрузить, то, соответственно, лесом и дизаблим этот пункт меню :)

и... 100 прототипов не так уж и много
по аэродрому...
Ответить