Delphi中调用VC++的Dll中的函数老是出错,请各位帮忙!(100分)

  • 主题发起人 主题发起人 bluesnow
  • 开始时间 开始时间
B

bluesnow

Unregistered / Unconfirmed
GUEST, unregistred user!
vc中的函数声明如下:
short DllExport
MLAdd_create_device
(
CHAR * o_pIndex,
unsigned char i_nDeviceType
);
vc中的调用如下:
#define M_VIDEOLIVE 0x02
SHORT l_nRep;
CHAR l_nDevice;
l_nRep = MLAdd_create_device(&l_nDevice, M_VIDEOLIVE);

请问:在delphi中该如何声明函数,如何定义函数参数类型,如何调用?
我做了如下声明及调用,但是就是不对,请大侠帮忙,万分感谢!

function MLAdd_create_device( o_pIndex:pchar;i_nDeviceType:byte):smallint
stdcall
external 'Add.dll';
var
l_nRep:smallint

l_nDevice:PChar

begin
try
GetMem(l_nDevice,8);
l_nRep:=MLAdd_create_device(@l_nDevice,M_VIDEOLIVE)
// M_VIDEOLIVE
finally
FreeMem(l_nDevice);
end;
end;
 
l_nRep:=MLAdd_create_device(l_nDevice,M_VIDEOLIVE)
//去掉&
 
我将l_nDevice定义为PChar、^Integer,调用时写@l_nDevice、l_nDevice,写GetMem和不写都试过了,程序走到整个函数的end时总是出地址错误,不知道怎么回事!
 
var
o_pBuffer:array[0..63]of Char;

function MLAdd_create_device( o_pIndex:pchar;i_nDeviceType:byte):smallint
stdcall
external 'Add.dll';
var
l_nRep:smallint

l_nDevice:PChar

begin

l_nRep:=MLAdd_create_device(@o_pBuffer,M_VIDEOLIVE)
// M_VIDEOLIVE

end;
 
谢谢无忌大侠!能否告知QQ号?[:D][:)]
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部