如何在Delphi下调用VC编译生成的动态连接库?(请教高手) (200分)

  • 主题发起人 主题发起人 Nias
  • 开始时间 开始时间
N

Nias

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一VC下编译好的Dll,可在VC++中调用,但不知如何在Delphi环境下调用。
调用的入口参数似乎不对,请高手指点一二!!!

帮我看一下如何在delphi下调用vc++编译的API函数,
函数名称为MPGSnap("c://capture.jpg",&m_snapparam,m_card)
封装在MpegDec.dll或10MoonsMPG.DLL中,用于从视频流中截取一幅图像,
第一个参数用于设置图像的保存位置,第二个参数设置图像大小(分辨率),
第三个参数设置卡号(可以使用默认值)。
在VC++环境下可调用,
调用语句为
void CMPGDemoDlg::OnButton3()
{
ABC = PutBmpMemory();
char str[256];
m_Snap.GetWindowText(str,256);
if (strlen(str)<3)
{
MPGSnap("c://capture.jpg",&m_snapparam,m_card);
}
else
{
MPGSnap(str,&m_snapparam,m_card);
}
}
您若有兴趣,我可以提供源文件(VC++调用DLL的文件)
请与我联系: mailto: nias@263.net
不胜感激!!!
 
有头文件吗?
把函数类型设为cdecl
 
把delphi和c的statement都贴出来,才能分析
 
这个好象跟VC的函数的声明有关(cdecl stdcall等),具体如何,要去查一下,还有
要注意函数名称的大小写。真可惜,以前做过的东西不在手边,星期一找到的话再贴
上来吧。
 
类似以下代码:
function MPGSnap(AFileName : Type1;AParam:Type2;AParam2:Type3): DWORD;
stdcall; external 'MpegDec.dll';

你连这个函数的参数类型都不写出来别人怎么会知道?
 
关系到参数的入栈顺序。参数有几种调用方法的。
delphi1默认为pascal
delphi2以上默认为cdecl
但是最好用标准方法调用
即C++中声明:extern "c" int _stdcall fun()
在delphi中调用: function fun:integer;stdcall;external xxxx;

 
我在使用该卡,愿意和你交流,并请你看一下“多媒体”栏中的“急急急!视频回调函数”中的问题!谢谢
 

Similar threads

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