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

Вниз

использование функции из DLL   Найти похожие ветки 

 
ghg ©   (2004-03-04 16:17) [0]

есть созданная в матлабе dll,
вот ее h-ник

#ifndef MLF_V2
#define MLF_V2 1
#endif

#ifndef __mytest_h
#define __mytest_h 1

#ifdef __cplusplus
extern "C" {
#endif

#include "libmatlb.h"

extern void InitializeModule_mytest(void);
extern void TerminateModule_mytest(void);
extern void mlfTest(void);
extern void mlxTest(int nlhs, mxArray * plhs[], int nrhs, mxArray * prhs[]);
extern void mytestInitialize(void);
extern void mytestTerminate(void);

#ifdef __cplusplus
}
#endif

#endif
<code/>

Далее есть проект в котором два юнита:

Unit1:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Unit2;

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 a : Pint;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 tested;
 edit1.Text:="2";
end;

end.
<code/>

Unit2:

unit Unit2;

interface

{$IFNDEF MYTEST}
procedure tested; stdcall;
{$ENDIF}
implementation

{$IFNDEF MYTEST}
procedure tested; external "mytest.dll" name "_mlfTest";
{$ENDIF}

end.
<code/>

Так вот при вызове tested выдает AV в DLL которая используется самой mytest.dll.

Вопрос: все ли тут правильно сделано? если нет то что и как нужно поправить?


 
cdecl   (2004-03-04 16:22) [1]

?


 
ghg ©   (2004-03-04 16:28) [2]

ну да видно конечн не очень
попробую переписать


unit Unit2;

interface

{$IFNDEF MYTEST}
procedure tested; stdcall;
{$ENDIF}
implementation

{$IFNDEF MYTEST}
procedure tested; external "mytest.dll" name "_mlfTest";
{$ENDIF}
end.


правильно ли зделан вызов процедуры из DLL?


 
Amoeba ©   (2004-03-04 16:49) [3]

Нет, неверно! Кто будет указывать какое соглашение о вызовах использутся при вызове ф-ии из DLL?
F1 + Calling conventions.


 
ghg ©   (2004-03-04 17:25) [4]

>Amoeba ©   (04.03.04 16:49) [3]
прочитал

в интерфейсной части вместо stdcall повставлял любые другие
то же самое

можно пояснить что сделано неправильно?


 
WebErr ©   (2004-03-04 17:31) [5]

cdecl пробовал? 8\


 
Asdor ©   (2004-03-04 17:35) [6]

Именно при вызове? или при загрузке проги?
Когда-то давно при работе с матлабовской DLL"кой у меня не получилось с ней работать потому, что на машине не было матлаба...


 
ghg ©   (2004-03-04 17:48) [7]

при вызове, вызывается нормально потом говорит что AV в модуле который уже к матлабу относится
да и есть матлаб на машине



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

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

Наверх




Память: 0.48 MB
Время: 0.023 c
9-1058516958
Sn@ke
2003-07-18 12:29
2004.03.28
RPG - обсуждение.


14-1077690128
Kerk
2004-02-25 09:22
2004.03.28
Злой автобус


3-1077383692
HMT
2004-02-21 20:14
2004.03.28
Как заменить текст в поле dbgrid а ?


14-1078153488
Я
2004-03-01 18:04
2004.03.28
Кто такие "мастера Делфи"?


1-1078862979
zep
2004-03-09 23:09
2004.03.28
мастера есть один лаймерский вопрос Real в String