Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема смешанного программирования, фортран+VB 
V
    Опции темы
Tuman
Дата 13.11.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.11.2006

Репутация: нет
Всего: нет




Есть dll  на фортране:

***************************************
subroutine xincube (x,y)

  ! Expose subroutine xincube to users of this DLL
  !
  !DEC$ ATTRIBUTES DLLEXPORT::xincube

  ! Variables

  ! Body of xincube
  y=x*x*x
  return

end subroutine xincube
**************************************
И ее вызов на VB:

    Declare Sub xincube Lib "xincube" (ByVal x As Integer, ByVal y As Integer).....
     .
     .
     .
    call xincube(2,tmp)...

на последней сторке выдает, что не может найти точку входа...
ЧТО Я ДЕЛАЮ НЕ ТАК 
 smile 
PM MAIL   Вверх
mihanik
Дата 13.11.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



А как у тебя tmp описана?

Добавлено @ 16:09 
И ещё...
Если в фортране не указывать тип переменных, то какой тип будет использоваться?

Integer?
Long?
Single?
Double?...




--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Akina
Дата 13.11.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Посмотри, что именно у тебя импортируется в готовой DLL...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Tuman
Дата 13.11.2006, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.11.2006

Репутация: нет
Всего: нет



Для простоты возьмем везде int

На сколько мне удалось выяснить в VB и фортране они совпадают.

Добавлено @ 16:41 
Цитата(Akina @  13.11.2006,  16:27 Найти цитируемый пост)
Посмотри, что именно у тебя импортируется в готовой DLL...


Здесь выложен поный код dll
Что к нему дописывает компилятор я не знаю.
В VB такое проходило на ура.
PM MAIL   Вверх
Naghual
Дата 13.11.2006, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Цитата

не может найти точку входа


Скорее всего это не СОМ библиотека.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Tuman
Дата 13.11.2006, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.11.2006

Репутация: нет
Всего: нет



Цитата(Naghual @  13.11.2006,  17:46 Найти цитируемый пост)
Скорее всего это не СОМ библиотека

Логично.
Точку входа нашел.
Дело было в изменении имени вызываемой функции.
Теперь проблема другая:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Переменная уходит в процедуру. А когда приходит время возвращаться то выдает эту ошибку.
PM MAIL   Вверх
Tuman
Дата 13.11.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 13.11.2006

Репутация: нет
Всего: нет



Спасибо всем. Все заработало.
Для тех кому интересно.
Приведу окончательные и рабочие "релизы".
FORTRAN:
**********************************************
!  xincube.f90 
!
!  FUNCTIONS/SUBROUTINES exported from xincube.dll:
!    xincube      - subroutine 
!
subroutine xincube (x,y) 
  !DEC$ ATTRIBUTES DLLEXPORT::xincube
  !DEC$ ATTRIBUTES ALIAS:'xincube' :: xincube
!ВОТ ГДЕ СОБАКА ПОРЫЛАСЬ!
integer(2),INTENT(in):: x
integer(2),INTENT(out) ::y
  ! Expose subroutine xincube to users of this DLL
  !
  ! Variables

  ! Body of xincube
  y=x*x*x

end subroutine xincube
********************************************

VISUAL BASIC:
Код

Public Class Form1
    Public y As Long
    Public x As Long
    
    Public Declare Sub xincube Lib "C:\Program Files\Microsoft Visual Studio\MyProjects\xincube\Debug\xincube.dll" (ByRef x As Long, ByRef y As Long)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        x = 2
        Call xincube(x, y)
        Me.Label1.Text = Str(y)
    End Sub
End Class



Оказалось что не совсем совпадают...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.