Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];

Вниз

dll! как заставить работать незвестную процедуру или функцию?   Найти похожие ветки 

 
snowkam ©   (2005-11-02 08:26) [0]

Все конешно хорошо. Написание dll  дело очень хорошее. А вот как сделать такую вешь. Скажем существует проект который использует процедуры некой dll-ки. Проект откомпелированный и в нем обьявлены эти процедуры. А если я написал в этой библиотеке новую процедуру. Как мне заставить проект увидеть ее. Можно ли сделать так чтобы скажем сам проект взял dll-ку, взял описание к ней и увидел все функции и процедуры находящиеся в ней!


 
Digitman ©   (2005-11-02 09:06) [1]


> Как мне заставить проект увидеть ее


точно так же как ты заставил свой exe-проект "увидеть" все предыдущие процедуры в твоей dll


 
evvcom ©   (2005-11-02 09:12) [2]


> Можно ли сделать так чтобы скажем сам проект взял dll-ку,
>  взял описание к ней и увидел все функции и процедуры находящиеся
> в ней!

Ну так напиши проект с искусственным интеллектом. :)
Что ты называешь описанием? Чтобы программа "понимала" какие-то процедуры и функции, она либо должна знать, что именно эта функция делает то-то, либо вызывая известные ей функции, получать от них необходимую ей информацию в понимаемом ею виде.


 
wal ©   (2005-11-02 09:39) [3]

AutomationObject + TypeLibrary, но что ты с этим делать будешь в "откомпилированном проекте"?


 
Slym ©   (2005-11-02 10:01) [4]

Ты часто нажимаешь неизвестные тебе кнопки?
А кнопка называется "Запускай меня, я безобидный", или FormatC, "220V KILL"...
Вот ты запустил бы такое? Я нет...
Тоже самое касается и программы.


 
snowkam ©   (2005-11-03 00:14) [5]

ой, ну извените может не так описал все это дело.
Мне нужно вот что. У меня существует проект который запускает некие процедуры. Так вот мне нужно чтобы эти процедуры были написанны отдельно. Скажем у меня написано нечто. Есть Основной проект и написанные к нему консольные  модули. Каждый модуль выдает результат одинакового формата "статус:  числовой результат".  Тоесть основной проект в определенное время запускает нужный модуль получает результат. И этот результат записывает в базу.  Очень удобно. Тоесть любой человек на чем угодно может написать любой консольный модуль который бы выполнял бы свои действия. Тоесть ему не приходится задумываться о том что нужно править основной проект.
Проблема в том что консольные приложения это очень грамозко и не удобно. Очень часто происходят сбои и подвисание всего проекта.  
Чем заминить это звено? Может у кого есть свои наработки. Думал заменить dll  но понял что это не возможно.


 
Zeqfreed ©   (2005-11-03 00:34) [6]

snowkam ©   (03.11.05 0:14) [5]
Опиши как сейчас у тебя это все работает. Я понял примерно так:  основная программа по какому-то критерию выбирает некую консольную программу, запускает её и считывает результат, так? В таком случае заменить консольные приложения dll-ками очень даже реально и даже очень желательно. Хм, и чем не подходят, например текстовые файлы, если формат вывода настолько прост? Или там используются какие-то вычисления с параметрами?

p.s.

> ой, ну извените может не так описал все это дело.

извеняем!


 
snowkam ©   (2005-11-03 01:15) [7]

2Zeqfreed:
>Я понял примерно так:  основная программа по какому-то критерию выбирает некую консольную программу, запускает её и считывает результат, так?

Все совершенно правельно.
А DLL не подходит потому что придется обьявлять процедуру в основном проекте. А я не хотелбы перекомпелировать основной проект.
Хотелось бы так написал модуль положил ее куда надо. Основному проекту в базу данных забил что в определенное время взять оттуда данный модуль, запустить его во столько бы часов с такими параметроми получить результат и результат записать в базу данных.
и все :-(


 
Baltika-39   (2005-11-03 02:11) [8]

>snowkam ©   (03.11.05 00:14) [5]

Вряд ли, начав использовать DLL, ты увеличишь надежность проекта в целом.
Если сейчас ты имеешь зависание приложения, после подключения DLL можешь получить крах приложения.

Ты бы описал точную схему вызовов консольных приложений, обмена данными.

Скорее всего, копать надо продолжать в этом направлении, немного изменив алгоритм.

Из твоего постинга непонятно:

1. Каким образом ты запускаешь консольное приложение.
2. Каким образом получаешь результат.
3. Причина зависания основного приложения.

Если будет информация об этом, можно будет что-то посоветовать.


 
snowkam ©   (2005-11-03 03:11) [9]

2Baltika-39
Да?
А я думал написание процедуры и написание консольного приложения это две разные вещи.
Помоему самое лутшее упразнение в моем варианте это какраз консоль заменить на процедуру!


 
Никто ©   (2005-11-03 04:48) [10]

Написание процедуры и написание dll, содержащей процедуру - вещи все-же немного разные.
Особенно, если учесть, что в Вашем случае "внешние" консольные приложения пишет "кто угодно, на каком угодно языке" - и, следствие - КАК УГОДНО.  А кто будет вписывать новые процедуры в Вашу Dll и перекомпилировать ее?
Если же каждый будет писать свою dll, экспортирующую некую "стандартную" функцию -  т.е. одинаковые название, список параметров, возвращаемый результат - придешь к тому же, что и с "консолями"...но,[b] имхо[/b], в еще худшем варианте.


 
snowkam ©   (2005-11-03 05:13) [11]

блин да что такое! Я спрашеваю чем можно заменить консольное приложение????? Не обязательно DLL


 
Никто ©   (2005-11-03 05:47) [12]

Чем? Да чем угодно... скриптом, dll, оконным приложением, com-сервером...
Всё зависит от задачи :Р
А Вас спрашивают - а НАДО ЛИ заменять?


 
Slym ©   (2005-11-03 09:49) [13]

Никто ©   (03.11.05 4:48) [10]
По какому критерию "худший вариант"?

snowkam ©   (02.11.05 8:26)
Афтар - я тебя перефразирую:
Есть приложение, которое во время работы должно вызывать "внешние" функции и сохранять результат. Налицо некое приложение с "плугинами". сейчас оно реализовано перехватом Std "плугинов-Exe"

Dll придуманы для динамической компоновки и лучшим образом подходят для организации Plugin схемы:

все Plugin экспортируют функцию с определенным именем и установленного (в рамках твоей схемы) формата.

1. приложение сканирует определенный каталог на dll
2. пытается загрузить их и найти нужную функцию
3. вызов функции.
4. выгрузка dll


 
Никто ©   (2005-11-03 11:54) [14]


> Slym ©   (03.11.05 09:49) [13]
> Никто ©   (03.11.05 4:48) [10]
> По какому критерию "худший вариант"?

Автор утверждает, что:
1)Проблема в том что консольные приложения это очень грамозко и не удобно. Очень часто происходят сбои и подвисание всего проекта.  
2)любой человек на чем угодно может написать любой консольный модуль который бы выполнял бы свои действия.
ИМХО, если в этой ситуации "любой человек на чем угодно" будет писать "любую dll" - Это  не избавит от сбоев и подвисаний. Зато может добавить падений.


 
Zeqfreed ©   (2005-11-03 11:54) [15]

snowkam ©   (03.11.05 5:13) [11]
Поддерживаю [13] :)

Опять же уточню, консольные программы сейчас используют какие-либо параметры, получаемые от основного модуля, для вычисления и отображения результат или нет? Если нет, то почему это не могут быть, например, обычные текстовые/бинарные файлы?


 
Никто ©   (2005-11-03 12:05) [16]


> Zeqfreed ©   (03.11.05 11:54) [15]

так использовать-то и правда можно что угодно  (Никто ©   (03.11.05 05:47) [12]) - а что именно, выбирается в зависимости от задачи -)
Но (моё голимое имхо) - в любом случае основное приложение писать надо аккуратнее. Не должны "сбои и зависания" вызываемых консольных приложений (в конкретном случае) так фатально влиять на основное. "Предохраняться надо" (с)


 
vasya pupkin   (2005-11-04 00:34) [17]

из всего прочитанного я понял что автор бьется над тем что ему нужно:

1. модуль выполнял какие либо функции и возвращал результат.
2. модули должны быть независимо написанны но работали как общее целое с проектом.

Автор добился результата при помощи консольных приложений. Но действительно это громозко и не удобно.
Согласен что тебе нужно использовать DLL  но в этом случаи тебе все равно придется перекомпилировать основной проект.
больше я не вижу решения данной проблеммы.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.049 c
14-1131601282
КаПиБаРа
2005-11-10 08:41
2005.12.04
Сергей Довлатов


4-1128372636
JJohn
2005-10-04 00:50
2005.12.04
В куче - список из строк(HeapAlloc & HeapFree)


8-1120592290
ronyn
2005-07-05 23:38
2005.12.04
Где чтоможно узнать по DVD,MPEG-2?


14-1131600217
ZeroDivide
2005-11-10 08:23
2005.12.04
Что за контора такая: ОЛДИ (Москва)


14-1131806272
Prohodil Mimo
2005-11-12 17:37
2005.12.04
Чем можно отконвертировать DOC в PDF ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский