Главная страница
    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.46 MB
Время: 0.029 c
3-1077983552
ZSergey
2004-02-28 18:52
2004.03.28
Помогите пожалуйста правильно составить SQL-запрос!


6-1073910254
INTAARI
2004-01-12 15:24
2004.03.28
как узнать, что данные дошли в TcpClient


7-1073661424
Marat_Ch
2004-01-09 18:17
2004.03.28
Диспетчер задач


8-1068992832
наблюдатель
2003-11-16 17:27
2004.03.28
CubeMap Image в GLScene


1-1078400753
@G
2004-03-04 14:45
2004.03.28
Компонент таблицы





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