Текущий архив: 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.46 MB
Время: 0.029 c