Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: CL | DM;

Вниз

Работа Delphi с библиотеками других языков   Найти похожие ветки 

 
Afonya   (2004-02-04 13:34) [0]

Добрый день, Мастаки!
Помогите пожалуйста разобраться в одном вопросе. Или посоветуйте свой вариант решения проблемы.
У меня есть библиотека (*.lib), написанная на фортране (под win32).
Как эту библиотеку можно подключить к проекту, чтобы была возможность вызова процедур и функций из нее?


 
MBo ©   (2004-02-04 13:53) [1]

никак. Сделай на фортране DLL


 
Afonya   (2004-02-04 14:04) [2]

Спасибо, сейчас попробую...


 
Afonya   (2004-02-06 09:57) [3]

MBo, сделал следующую DLL-ку:

REAL*8 FUNCTION SUB (N)
!MS$ATTRIBUTES DLLEXPORT :: SUB
SUB = 10.0*N
RETURN
END FUNCTION


Но при вызове её из своего Делфи-приложения, происходит ошибка - создается исключит. ситуация. Вот текст подключения DLL-ки (она лежит в том же каталоге, где и сама программка)

procedure TForm1.Button1Click(Sender: TObject);
type
//_Array = array of double;
TShow_MY_FUNCTION = function( N : integer ) : real;
var
//My_Array : _Array;
N : integer;
R : real;
hLib : THandle;
Show_MY_FUNCTION : TShow_MY_FUNCTION;
begin
N := 10;
hLib := LoadLibrary("MY_FUNCTION.DLL");
if hLib >= 32 then
begin
@Show_MY_FUNCTION := GetProcAddress(hLib,"SUB");
if @Show_MY_FUNCTION <> nil
then R := Show_MY_FUNCTION( N );
end
else
ShowMessage("Отсутствует библиотека MY_FUNCTION.DLL");

FreeLibrary(hLib);
end;


Может хоть кто-нибудь подскажет, где я ошибаюсь?


 
jack128 ©   (2004-02-06 10:00) [4]

Соглашения о передаче параметров в фортране какие? Сомневаюсь, что register, как в Дельфи


 
Afonya   (2004-02-06 10:04) [5]

Я в FORTRANe не силен пока, может кто знает, где "собака зарыта"?
Может кто наступал на эти грабли?


 
MBo ©   (2004-02-06 10:12) [6]

TShow_MY_FUNCTION = function( N : integer ) : double; stdcall
или другое соглашение о вызове, указанное (или подразумеваемое) при создании DLL. jack128 уже указал, что в Delphi по умолчанию используется соглашение register, обычно несовместимое с другими языками.


 
afonya   (2004-02-06 17:22) [7]

С передачей простых (целочисленных и вещественных) типов данных разобрался. А вот как теперь с массивами разобраться. Как передовать в dll-ку хотябы статический массив из Delphi?


 
MBo ©   (2004-02-06 17:31) [8]

со статическим массивом особых проблем не должно быть - в функции фортрана, если не ошибаюсь, всегда он передается по ссылке, т.е. указатель на него, в Delphi - var.



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

Текущий архив: 2004.02.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
14-53701
syte_ser78
2004-01-30 14:47
2004.02.17
Опять глупый вопрос ....


1-53584
Max003
2004-02-08 15:48
2004.02.17
Как пеобразовать Real в String или Char


14-53710
Cerber
2004-01-29 17:31
2004.02.17
Место общенния


1-53467
VID
2004-02-05 23:14
2004.02.17
Определение SelStart по координатам мышки


14-53690
mixrud
2004-01-30 14:06
2004.02.17
как создать аналог RAdmin