Здравствуйте, гость ( Вход | Регистрация )
|
AntonTatu |
4.3.2009, 17:56
Сообщение
#1
|
|
Студент ![]() Группа: Участник Сообщений: 48 Регистрация: 27.11.2008 Пользователь №: 437 Спасибо сказали: 0 раз(а) Репутация: 0
|
Всем привет !
Вопрос в следующем, имеется прога которая генерирует некоторую формулу (формула меняет количество своих параметров в зависимости от исходных значений в программе ), в этой же проге есть массив который использует полученную формулу в дальнейших расчетах, хочется создать из формулы dll ку и потом ее вызывать в нужном месте программы, как это сделать? С вызовом полученной dll я вроде бы разобрался, а вот как научить прогу генерить dll ку понять не могу. ЗЫ: Какие можно использовать компилятор/линковщик (минимум занимаемого места, требуемых для работы файлов, потдержка STL требуется) Выручайте ! |
|
|
|
![]() |
|
ViGOur |
4.3.2009, 18:31
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40
|
SABROG, думаю твой пост не к месту.
Просто есть два варианта: AntonTatu, не совсем понимает, как и что раюотает и что должно происходить или он прекрасно понимает что ему нужно, но не правильно объяснил. Надеюсь вы знаете насчет криптованных exe файлов, которые сами себя перевоссоздают, правда это относится к вирусо писательству. |
|
|
|
|
SABROG |
4.3.2009, 18:42
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34
|
Цитата(ViGOur @ 4.3.2009, 18:31) Link SABROG, думаю твой пост не к месту. Человеку надо генерить dll, я предложил единственно правильный способ как для linux, так для windows - кроссплатформенная компиляция (MinGW). В принципе надо всего-то сгенерить С++ файл и вызвать компилятор с параметрами. |
|
|
|
|
AntonTatu |
4.3.2009, 20:25
Сообщение
#4
|
|
Студент ![]() Группа: Участник Сообщений: 48 Регистрация: 27.11.2008 Пользователь №: 437 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(ViGOur @ 4.3.2009, 18:31) Link Человеку надо генерить dll, я предложил единственно правильный способ как для linux, так для windows - кроссплатформенная компиляция (MinGW). В принципе надо всего-то сгенерить С++ файл и вызвать компилятор с параметрами. Попробую объяснить по другому: Во время выполнения программы из рисунка по некоему алгоритму составляется формула в конце концов принимающая вид типа: QString str = "A+B*C+D*E+G" переменные этой формулы (числовые значения A, B, C и т.д.) на момент компиляции программы не известны, длинна формулы (количество переменных ) то же, может быть и такой вариант: A+A+A*D*E+B+C, соответственно единственный выход (который я вижу) это: 1.Запустить программу, получить формулу 2.Загнать формулу в фунцию, создать с этой функцией C++ файл 3. Создать из этого C++ файла библиотеку dll 4. Использовать этот dll в программе 5. Получить числовой ответ PS: Формула может быть огромна, разбирать ее на лету с помощью ну к примеру конечных автоматов нереально долго (пробовал) Как сохранить формулу в текстовый файл (С++) проблемы нет, как использовать созданную dll вроде то же понятно (в Google есть) Вопрос в том какой компилятор (С++) использовать ? (должен уметь STL и требовать как можно меньше файлов для запуска себя (один экзешник и все было бы замечательно), что бы вместе со своей прогой еще и 200 мб, компилятора не таскать) , может есть где пример вызова компилятора из командной строки очень поможет. И еще вопрос, какие компиляторы можно использовать если я пишу софт на продажу (ну это так для общего развития) Что то прочитал свой опус, наверно опять непонятно объяснил, не суть вопрос больше касается именно выбора компилятора. Цитата(trdm @ 4.3.2009, 19:38) Link А я вообще не врубился в "генерирует формулу".... Очень смахивает на патерн интерпретатор, название которого уже и есть решение: использовать интерпретатор и создавать не формулу, а файло на скриптовом языке... и юзать его... или я ничерта не понял..... Короче, автор, используй встроенный интерпретатор. зачем придумывать интерпритатор, если можно воспользоваться обычным вызовом dll ки, весь вопрос в том как ее правильно создавать используя сторонние компиляторы C++ из командной строки ? (так полюбому быстрее будет, а скорость в моем случае очень важна) а пример использования файла на скриптовом языке где можно посмотреть ? |
|
|
|
|
trdm |
4.3.2009, 21:32
Сообщение
#5
|
|
Дмитрий Трошин ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: 6
|
Цитата(AntonTatu @ 4.3.2009, 20:25) Link Попробую объяснить по другому: ....поскипано.... все это крайне странно выглядит.... Цитата(ViGOur @ 4.3.2009, 21:10) Link Цитата(AntonTatu @ 4.3.2009, 21:04) Link а "скрипты генерить" это и есть QtScript ? (что почитать ?) QtScript - для того, чтобы скрипты писать. А что они будут делать, зависит только от тебя. Почитай: Link QtScript - для того, чтобы скрипты ИСПОЛНЯТЬ. Разница существенная. Таки как раз в скрипт можно передавать сгенеренную формулу, а на выходе получит результ её исполнения. |
|
|
|
|
AntonTatu |
4.3.2009, 21:55
Сообщение
#6
|
|
Студент ![]() Группа: Участник Сообщений: 48 Регистрация: 27.11.2008 Пользователь №: 437 Спасибо сказали: 0 раз(а) Репутация: 0
|
[/quote]
QtScript - для того, чтобы скрипты ИСПОЛНЯТЬ. Разница существенная. Таки как раз в скрипт можно передавать сгенеренную формулу, а на выходе получит результ её исполнения. [/quote] А что по скорости выполнения ? , вот что написано у М.Шлее: "При создании объектов функций важно учитывать то обстоятельство, что трансляция объекта Function выполняется при каждом его использовании, вследствие чего исполнение кода будет гораздо медленнее, чем при исполнении обычных функций языка сценариев. " Насколько на Ваш взгляд такая функция будет выполнятся медленнее чем скомпилированная в dll ку ? |
|
|
|
|
trdm |
4.3.2009, 23:10
Сообщение
#7
|
|
Дмитрий Трошин ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 575 Регистрация: 12.1.2008 Пользователь №: 68 Спасибо сказали: 21 раз(а) Репутация: 6
|
Цитата(AntonTatu @ 4.3.2009, 21:55) Link Цитата QtScript - для того, чтобы скрипты ИСПОЛНЯТЬ. Разница существенная. Таки как раз в скрипт можно передавать сгенеренную формулу, а на выходе получит результ её исполнения. А что по скорости выполнения ? , вот что написано у М.Шлее: "При создании объектов функций важно учитывать то обстоятельство, что трансляция объекта Function выполняется при каждом его использовании, вследствие чего исполнение кода будет гораздо медленнее, чем при исполнении обычных функций языка сценариев. " Насколько на Ваш взгляд такая функция будет выполнятся медленнее чем скомпилированная в dll ку ? нормальное замечание. не знаю. если верить Шлее и предположить, что трансляция - есть разбор+интерпретирование, тогда использование QtScript может быть и не оправдано.... есть скриптовые языки у которых разделены фазы разбора+формирование байткода и интерпретация. я так понял формула некоторое время не меняется, а входные параметры меняются. правильно? |
|
|
|
|
AntonTatu |
4.3.2009, 23:42
Сообщение
#8
|
|
Студент ![]() Группа: Участник Сообщений: 48 Регистрация: 27.11.2008 Пользователь №: 437 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата нормальное замечание. не знаю. если верить Шлее и предположить, что трансляция - есть разбор+интерпретирование, тогда использование QtScript может быть и не оправдано.... есть скриптовые языки у которых разделены фазы разбора+формирование байткода и интерпретация. я так понял формула некоторое время не меняется, а входные параметры меняются. правильно? ну в общем да, получается что то вроде цикла: формула 1 -> фходные параметры 1 формула 1 -> фходные параметры 2 формула 1 -> фходные параметры 3 формула 1 -> фходные параметры N формула 2 -> фходные параметры 1 формула 2 -> фходные параметры 2 формула 2 -> фходные параметры N формула k -> фходные параметры N формула 1 -> фходные параметры 1 формула 1 -> фходные параметры 2 формула 1 -> фходные параметры 3 и т.д. Я в принципе уже написал вариант на Delphi, в нем для того чтобы использовать компилятор достаточно выдрать экзешник + пару дллок.., теперь переписываю под QT, а вот компилятор С++ подобрать не могу все за собой хвост тащат в энное кол во мегабайт и файлов... |
|
|
|
AntonTatu Реализация анализатора (парсера) формул времени выполнения 4.3.2009, 17:56
kuler если в студии, то там всего лишь надо указать тип ... 4.3.2009, 18:13
Litkevich Yuriy Цитата(AntonTatu @ 4.3.2009, 20:56) а вот... 4.3.2009, 18:24
SABROG Можно таскать вместе с программой MinGW
Зачем ... 4.3.2009, 18:26
trdm Цитата(AntonTatu @ 4.3.2009, 20:25) PS: Ф... 5.3.2009, 9:54
trdm А я вообще не врубился в "генерирует формулу... 4.3.2009, 19:38
Admin SABROG, перечитал твое сообщение, и решил извинить... 4.3.2009, 20:32
Litkevich Yuriy AntonTatu, а QtScript тебе для этих целей тоже не ... 4.3.2009, 20:40
AntonTatu Цитата(Litkevich Yuriy @ 4.3.2009, 20:40)... 4.3.2009, 21:04
ViGOur Цитата(AntonTatu @ 4.3.2009, 21:04) а ... 4.3.2009, 21:10
SABROG Цитата(AntonTatu @ 4.3.2009, 20:25) Форму... 5.3.2009, 0:33
Константин потому, что компилятор предназначен для компилиров... 5.3.2009, 0:47
Litkevich Yuriy Цитата(AntonTatu @ 5.3.2009, 0:55) А что ... 5.3.2009, 8:19
AntonTatu Цитата(Litkevich Yuriy @ 5.3.2009, 8:19) ... 6.3.2009, 0:07
BRE Цитата(AntonTatu @ 6.3.2009, 0:07) я так ... 6.3.2009, 7:52
BRE Пример:
array2d.h
#ifndef __ARRAY2D
#define __ARR... 6.3.2009, 9:29
BRE Цитата(BRE @ 6.3.2009, 9:29) Пример:
arr... 6.3.2009, 10:03
Гость_AntonTatu_* ЦитатаВысокой скорости вычисления от скриптов ожид... 6.3.2009, 12:11
BRE Цитата(Гость_AntonTatu_* @ 6.3.2009, 12:1... 6.3.2009, 12:26
AntonTatu Цитата(BRE @ 6.3.2009, 12:26) Цитата(Гост... 6.3.2009, 12:34
BRE Цитата(AntonTatu @ 6.3.2009, 12:34) все н... 6.3.2009, 12:39
BRE Цитата(AntonTatu @ 6.3.2009, 12:34) форму... 6.3.2009, 19:05
AntonTatu ЦитатаИсходя из этого сообщения, я не представляю ... 6.3.2009, 21:19
BRE Цитата(AntonTatu @ 6.3.2009, 21:19) Алгор... 6.3.2009, 21:31
AntonTatu Цитата(BRE @ 6.3.2009, 21:31) 4. запускае... 7.3.2009, 0:23
BRE Цитата(AntonTatu @ 7.3.2009, 0:23) подума... 7.3.2009, 10:18
AntonTatu ЦитатаКак с этим закончим, можно будет попробовать... 9.3.2009, 2:24
BRE Цитата(AntonTatu @ 9.3.2009, 2:24) main.o... 9.3.2009, 10:27
AntonTatu ЦитатаПокажи, что сейчас получилось...
Прежде вс... 9.3.2009, 13:35
BRE Цитата(AntonTatu @ 9.3.2009, 13:35) stat... 9.3.2009, 13:50
AntonTatu Цитата(BRE @ 9.3.2009, 13:50) В исходник ... 9.3.2009, 16:06
trdm Может быть ассемблер?
Данные то все числовые, ком... 6.3.2009, 16:34
SABROG Тогда можно глянуть на fasmlib. 6.3.2009, 17:01
SABROG Я так понял, что у него проблема с тем, что в рант... 6.3.2009, 20:24
BRE Цитата(SABROG @ 6.3.2009, 20:24) Я так по... 6.3.2009, 20:44
Litkevich Yuriy Цитата(AntonTatu @ 9.3.2009, 16:35) выраж... 9.3.2009, 14:03
SABROG Как по скорости? 9.3.2009, 16:11
AntonTatu Цитата(SABROG @ 9.3.2009, 16:11) Как по с... 9.3.2009, 18:59
BRE Цитата(AntonTatu @ 9.3.2009, 18:59) Цитат... 9.3.2009, 20:32
AD Цитата(BRE @ 9.3.2009, 20:32) Погонял тес... 9.3.2009, 20:36
BRE Цитата(AD @ 9.3.2009, 20:36) Цитата(BRE ... 9.3.2009, 20:46
AntonTatu Цитата(BRE @ 9.3.2009, 20:46) ..получил у... 10.3.2009, 12:49
BRE Цитата(AntonTatu @ 10.3.2009, 12:49) т.е.... 10.3.2009, 20:46
AntonTatu Цитата(BRE @ 10.3.2009, 20:46) Ну барин т... 10.3.2009, 23:38
BRE Мне кажется, что логичней, если сам метод run() бу... 11.3.2009, 6:12
AntonTatu Цитата(BRE @ 11.3.2009, 6:12) Мне кажется... 11.3.2009, 11:09
BRE Цитата(AntonTatu @ 11.3.2009, 11:09) //Оч... 11.3.2009, 11:31
BRE Еще небольшое уточнение, насчет операций вычитания... 9.3.2009, 17:24
Litkevich Yuriy Ребята подумайте как переименовать тему, я ее чита... 9.3.2009, 20:56
SABROG Цитата(BRE @ 9.3.2009, 20:46) Посмотрел.
... 10.3.2009, 20:21
Litkevich Yuriy Цитата(SABROG @ 10.3.2009, 23:21) Хорошо ... 10.3.2009, 20:24
SABROG Цитата(Litkevich Yuriy @ 10.3.2009, 20:24... 10.3.2009, 20:29
BRE Добавил контексты.
Разбил по файлам.
Кратко докуме... 11.3.2009, 21:44
AntonTatu Цитата(BRE @ 11.3.2009, 21:44) Добавил ко... 11.3.2009, 21:52
BRE Цитата(AntonTatu @ 11.3.2009, 21:52) ЗЫ: ... 11.3.2009, 23:17![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 16.12.2025, 1:49 |