![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 27.08.2009
Сообщений: 34
|
![]()
есть код программы на фортране, можно ли создать длл для с++, и можно ли будет получать результаты выполнения фортрановского модуля из этой длл? как это сделать? и будет ли снижать скорость работы программы, или осуществить просто перевод из фортрана в с++??
![]() |
![]() |
![]() |
![]() |
#2 | ||||
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]() Цитата:
Цитата:
- знание механизма передачи параметров в подпрограмму и обратно там и там; - знание некоторых тонкостей конкретного фортран-компилятора (какие "decoration rules" используются); - API-функции LoadLibrary() и GetProcAddress(). Цитата:
Цитата:
![]() В общем, google-запросы типа "calling fortran from C++" или "fortran C mixed-language programming" в помощь! ![]() ADDED 19:31 CET А, и ещё... Посмотрите в началах Фортрановских файлов: операторов COMMON и, особенно, EQUIVALENCE много? Если есть - плюньте на идею портинга сразу и сконцентрируйтесь на mixed-language программировании. Иногда, кстати, и статически удаётся Фортран прилинковать. Последний раз редактировалось Vago; 27.02.2011 в 21:31. |
||||
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 27.08.2009
Сообщений: 34
|
![]()
так а как потом из dll вытаскивать значения нужных переменных? можно пример?
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
Ну, если бы DLL была C-шной? У Вас такой вопрос возник бы?
![]() Какая у Вас пара C / Фортран? Что за компиляторы? |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 27.08.2009
Сообщений: 34
|
![]()
работаю в с++ билдер 6, какой фортран понятия не имею, поставили перед задачей, что нужно использовать этот код =(
могу привести пару строк: DIMENSION E(3),B(3),Q(100) COMPLEX CL(30),F1(100),F2(100) COMMON/BL1/A,B1/BL2 READ(1,13) C,A,D1,E1 13 FORMAT(F7.4/F7.4/F7.4/F7.4/F7.4/F7.4/) итп)) |
![]() |
![]() |
![]() |
#6 | ||
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
От работы с этой штуковиной Бог миловал!
![]() Цитата:
Цитата:
... Главная (безымянная) Фортран-программа оформляется как FUNCTION. Дальше - два варианта. Если READ'ов относительно немного - всё, что в них вводится, зафигачивается в список параметров, вводится в C и оттуда передаётся (а из Фортрана орераторы ввода, естественно, удаляются). Если много - через параметры передаётся имя файла с исх. данными, а до первого READ вставляется оператор OPEN (UNIT=1, FILE= ... ) на этот файл, и весь ввод делается в Фортране, как и делался. |
||
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
Davlet M, существует ещё один способ. Хоть и некрасивый, но работающий. Просто строится фортрановский exe-шник и запускается из C в нужном месте через system() (или что там в Борланде). Обмен данными - через файлы. Если "программный комплекс" лепится для внутреннего пользования - вполне может сойти. Тут вот человек с БЕЙСИКом Фортран намеревался сопрячь, но чем у него кончилось - не знаю...
Последний раз редактировалось Vago; 27.02.2011 в 23:06. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 27.08.2009
Сообщений: 34
|
![]()
вся проблема в том, что ехешник ужасно грузит проц, ибо он запускаться должен очень много раз для расчета и настройки, при этом нужно создавать файлы и считывать их, а если внедрять код в с или использовать длл, то мне достаточно получить значения двух массивов. насчет перфокарт то да, вы правы, это очень старый код((( я хотел переводить с фортрана в с++. но уж очень приличный по объему текст((
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
![]()
Я завтра какой-нибудь элементарный примерчик наваяю, попробую показать шаг за шагом, как это делается. ПосмОтрите, прикинете ещё раз, перед тем, как принять решение...
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 27.08.2009
Сообщений: 34
|
![]()
хорошо, спасибо)
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание dll на с++ для 1с8 | zladej | Общие вопросы C/C++ | 0 | 05.07.2010 13:11 |
Создание dll | John_chek | Общие вопросы Delphi | 3 | 24.09.2007 14:26 |
Создание dll файла для работы с БД | Nadya | БД в Delphi | 2 | 15.02.2007 12:54 |