Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
ВнизРабота 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c