Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
4-53822
lokka
2003-12-14 14:20
2004.02.17
SHChangeNotifyRegister для Service Application


3-53389
denis24
2004-01-27 10:19
2004.02.17
table1.checkopen


1-53487
Вованчик
2004-02-06 08:00
2004.02.17
Как исключить Qtintf70.dll из дистрибутива?


1-53632
КомофОнСамый
2004-02-06 19:59
2004.02.17
Как упорядочить созданое MDI окно


3-53395
phpist
2004-01-22 19:13
2004.02.17
Обновление BLOB-полей в ZeosDB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский