Форум: "Основная";
Текущий архив: 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