Главная страница
    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.009 c
7-53800
maxXP
2003-12-02 19:23
2004.02.17
Как определить нажата, отпущена кокретная клавиша клавиатуры a-z


6-53666
BPK
2003-12-13 23:43
2004.02.17
Как получить все IP-адреса, связанные с хостом?


3-53398
NoName
2004-01-27 03:50
2004.02.17
Проблема с запросом


6-53679
Shaman O Mega
2003-10-23 14:39
2004.02.17
ip в TIdTCPServer при подключение клиента


14-53757
Crusader
2004-01-17 16:15
2004.02.17
Зарплата





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский