Текущий архив: 2005.03.20;
Скачать: CL | DM;
Вниз
Помогите решить проблему с Dll Найти похожие ветки
← →
delphi-code © (2005-03-06 21:36) [0]Помогите решить проблему, дайте дельный совет.
Есть файл "prog.exe", который обращается к библиотеке "test.dll".
Необходимо:
1. В библиотеке есть функция(процедура) "test_zapros", но неизвестно, какой ей необходимо передать параметр из файла "prog.exe". В смысле Integer, String или что-то другое.
2. Как определить, что возвращает "test.dll" в файл "prog.exe", какой параметр(какая информация) и какого типа.
3. Подскажите, как происходит обмен данными между программой и используемой библиотекой. Желательно объяснять подробно, по возможности. У меня представление, что обмен выглядит как работа клиент-сервер. Так ли это.
Если кто знает решение прошу мне помочь.
← →
Leeechhhh (2005-03-06 21:41) [1]прога --запрос--> DLL
|
прога<--ответ--
← →
Palladin © (2005-03-06 21:44) [2]1 Что необходимо то? Струтктура ожидаемых в стеке данные зависит только от реализации библиотеки, то есть, создатель должен афишировать что требует та или иная функция.
2 Что необходимо то? См п1.
3 Как закажешь так и выглядит. Подробности: Calling convention - F1.
то базис. Что там еще можно придумать (запуск потоков, обмен через FM, через FS, черз WM) на сколько фантазия разгуляется.
3А.
У меня представление, что обмен выглядит как работа клиент-сервер. Так ли это.
Любой запрос/получение данных есть клиент/сервер. Клиент/сервер - это абстакция.
> Если кто знает решение прошу мне помочь.
А чего решение то? Как с закрытыми глазами определить скольки этажный перед тобой дом:
← →
Defunct © (2005-03-06 22:08) [3]> 2. Как определить, что возвращает "test.dll" в файл "prog.exe", какой параметр(какая информация) и какого типа.
Это нельзя определить без доки к dll или исходника dll.
← →
delphi-code © (2005-03-07 01:09) [4]До меня в организации был программер, который написал прогу по расчету химпроцессов. У его проги есть dll называется "xim_p.dll" в ней происходит мат. расчет(обоснование) количественной базы элементов.
Программер уже два года как ушел из организации, но его программа живет, ее продолжают использовать. В данный момент мне поставили задачу создать программу схожую с его, но с дополнительными расчетами в отдельную ветвь данной области.
Мне хочется взять за основу его dll, чтобы не писать все заново.
1. Необходимо узнать, какие функции(процедуры) внутри "xim_p.dll". Их список. И с какими параметрами они выполняются.
Одну я знаю: xim_p_stat(a : integer) : integer; где "a" может принимать значения: 1 - старт, 2 - пауза, 0 - стоп.
2. Как определить, что возвращает "xim_p.dll" в прогу. Как осуществляется получение программой результата из ДЛЛ. В смысле, какой обработчик получает результат. Это какой то буфер?
Я представляю это так: ДЛЛ ===> буфер --> обработчик(сообщение что есть ответ от Длл) ===> прога. Так это?
3. Еще один вопрос: например я загрузил функцию "xim_p_stat(1)" как мне узнать, что результат этой функции должен быть integer? если я не знаю тип возвращаемого результата.
Буду рад вашим размышлениям по данным вопросам. Мне необходимо разобратся в них, прог очень много и из каждой необходимо выдрать тот или иной расчет.
← →
DrPass © (2005-03-07 01:23) [5]1. Список функций можно узнать чем угодно. tdump из Delphi, специальный плагин к FAR и т.д. Параметры функций в DLL не хранятся. Они вообще нигде не хранятся, кроме написанной программистом документации. Можно сделать предположение о типе и количестве параметров, если просмотреть код DLL с помощью отладчика, в частности, выборки из стека и регистров при вызове функций. Но это будут лишь предположения.
2. Точно так же. Результат тоже нигде не хранится.
> В смысле, какой обработчик получает результат. Это какой
> то буфер?
... бегом читаем теорию. Такие вещи говорить - значит, вообще понятия не иметь, что такое DLL.
> Я представляю это так:
Неправильно представляешь. Процедуры/функции из DLL компонуются с твоей программой, и их вызовы ничем не отличаются от вызовов других процедур/функций в твоей программе. Никаких буферов/обработчиков, все напрямую.
3. Если ты написал function xim_p_stat(a : integer) : integer, то ты уже указал, что результат будет integer, не так ли? Если же на самом деле эта функция в DLL возвращает что-то другое, ты
а) получишь Access Violation или
б) даже не заметишь. Просто результат функции будет неверным
← →
jack128 © (2005-03-07 01:31) [6]Интересно программист работал. Что, исчез и исходников не оставил??
← →
GanibalLector © (2005-03-07 02:57) [7]2 jack128 © (07.03.05 01:31) [6]
А че,вполне нормально.Я вот тоже когда уйду из своей конторы исходников не оставлю! Почему? Да потому,что кидают с ЗП.Нет,не подумай,платят,но МАЛО!
← →
Германн © (2005-03-07 04:23) [8]Я тоже ухожу из фирмы(конторы).
Но исходники оставлю.
Я им не враг.
Другой вопрос, а смогут ли они использовать мои исходники? Это уже их проблема!
Тут еще один интересный вопрос! За сколько килобаксов возьмется любой из программистов изучить их, осознать их и быть готовым изменить их в соответствии с новыми требованиями?
Я вел несколько проектов на Дельфи. Тут, может быть, кто-то сможет их "подхватить". Вот только захочет ли?
Но основная моя работа заключалась в разработке программ для микроконтроллеров типа MCS51. А уж там( а писАл я только на ассемблере) - разобраться новому человеку :(
Себе бы я такого не пожелал бы! Даже, если бы были подробные комментарии.
← →
Defunct © (2005-03-07 09:44) [9]Германн © (07.03.05 04:23) [8]
> Но основная моя работа заключалась в разработке программ для микроконтроллеров типа MCS51.
Германн! будет время take a look:
http://www.dca.narod.ru/simulation/mk51.htm
может пригодится, а нет так буду рад критике.
← →
KSergey © (2005-03-07 09:56) [10]ОФФ
> [7] GanibalLector © (07.03.05 02:57)
Убивал бы таких "работничков".
Не нравится сколько платят - ну так скажи это им в лицо.
Но на кой уходя подкладывать свинью??! А по-нормальному не удается свою "значимоть" показать? Только гадостями?
А если мало платят - на кой вообще работаешь?
← →
GanibalLector © (2005-03-07 12:16) [11]2 KSergey © (07.03.05 09:56) [10]
Господин,успокойтесь!
>ну так скажи это им в лицо
Говорил,один раз(год назад) подняли...сейчас не хотят.
>А по-нормальному не удается свою "значимоть" показать?
Что за бред?
Уважаемый,когда Вы трудоустраивались с Вами вероятно заключали контракт,в котором оговаривались Ваши обязанности.Со мной нет.Так скажите мне теперь,почему я должен кому-то дарить свой труд?
← →
KSergey © (2005-03-07 12:30) [12]> [11] GanibalLector © (07.03.05 12:16)
> >А по-нормальному не удается свою "значимоть" показать?
> Что за бред?
А вот оно и подтверждение непризнанной значимости:
> Так скажите мне теперь,почему я должен кому-то дарить
> свой труд?
Впрочем, если есть желание бестолково пободаться - предлагаю завести соотв. ветку на "права на исходники"
← →
GanibalLector © (2005-03-07 12:33) [13]2 KSergey © (07.03.05 12:30) [12]
>если есть желание бестолково пободаться
Нет никакого желания!
З.Ы. Своего мнения я не изменю.
← →
Erik1 © (2005-03-07 12:45) [14]Всякое бывает в жизни, но обычно сокрытие исходников неприносит дополнительных денег, а проблемы возникают. Значить сие бесмыслено!
← →
sniknik © (2005-03-07 13:24) [15]GanibalLector
все правильно, не нравится уходи. и не только зарплата имеет значение.
(мне например не нравится(оччччень) то что меня "гоняют" на затыкание дыр, причем не в моей программе, чужих... моя работает, практически не требуя поддержки, и мне вроде как делать нечего, другие постоянно заняты латанием... и вот вместо того чтобы дать мне другой проект (новый, или например чужой на переделку) приходится ездить выяснять в чем проблемы в других программах. если уволюсь то изза этого по большей части, и мне тоже плевать что никто из оставшихся в моем коде не разберется... а взять нового такого же уровня будет гораздо дороже, это будут их проблемы. если уйду конечно ;)))
KSergey
в чем вы видите "гадости"? в том что человек уходя оставляет все сделанное в открытом виде, но тот кто придет в этом не сможет разобратся?
т.е. ему надо было предусмотрительно писать на уровне "дауна", чтобы после любой переучившийся грузчик легко "подхватил" его работу? ;о)) извините но это просто смешно. (это мышление начальника. "работа должна идти, платить как можно меньше, и лучше взять десять средних чем одного профи на одно дело." пусть даже в общем будет дороже ;о))
← →
Германн © (2005-03-08 02:19) [16]2 Defunct © (07.03.05 09:44) [9]
>Германн! будет время take a look:
>http://www.dca.narod.ru/simulation/mk51.htm
Спасибо. Взглянул. Учту при необходимости, что такое есть.
Не знаю, что там за компиллятор. Ко всем существующим компилляторам ассемблера у меня есть претензии, но существенная только одна: я не люблю те из них, которые не поддерживают "локальные метки".
Бзик у меня такой :(
← →
satay (2005-03-08 23:25) [17]А начиналось - то все из Длл-ки................
← →
Германн © (2005-03-09 02:52) [18]2 satay (08.03.05 23:25) [17]
И закончилась вполне ес-стно в виду поста:
delphi-code © (07.03.05 01:09) [4]
Кто-то был, кто-то, что-то сделал.
Теперь имеем некую DLL, но не имеем по ней достаточной документации и не имеем возможности затребовать оную от автора!
И ес-стно сидим в сортире!
Поскольку, как было описано в данной (и не только в данной) ветке, пользоваться DLL можно только тогда, когда "точно" известно - какие в ней есть функции, какие у оных параметры, и какой результат они возвращают.
Страницы: 1 вся ветка
Текущий архив: 2005.03.20;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.027 c