Delphi中调用VC创建的DLL时出现问题

beihaojia 2008-05-07 01:31:32
使用的VC动态库的函数:
extern "C" _declspec(dllexport) _stdcall int CreateVix(char *MpegPath,char *VixPath,char *FileName,char &Error,int *pct)

在delphi中调用:
function CreateVix(MPEGPath:PChar;VixPath:PChar;FileName:PChar;Error:PChar;Pro0:PInt):integer;stdcall;external 'CreateSaf.dll' name '_CreateVix@20';
procedure TForm1.Button1Click(Sender: TObject);
var
VixTag,pp:integer;
a,b:integer;
jj:PInt;
mpegPath,vixPath,fileName,error:string;
begin
mpegPath:= 'D:\Clips\@A084A01.mpg' ;
vixPath:= 'D:\Clips\';
fileName:= '@A084A01' ;
error:= 'p';
pp := 2;
jj:= @pp;
VixTag := CreateVix(PChar(mpegPath),PChar(vixPath),Pchar(fileName),PChar(error),jj);
if VixTag<>0 then
edit1.Text:=inttostr(VixTag)
else
edit1.Text:='error';

在运行时弹出CPU对话框,提示错误箭头指向:77F9193D ret
不知道这是什么错误,如何解决
注:VC动态库中包含调用了其他一些静态库的内容,不知道在delphi调用此类动态库的时候需要如何设置
声明:此动态库在用VC进行调用的时候是没有问题的
...全文
82 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
beihaojia 2008-05-07
  • 打赏
  • 举报
回复
这个问题和我动态库中导出的函数调用其内部的函数有静态函数造成的吗?
beihaojia 2008-05-07
  • 打赏
  • 举报
回复
? 为什么这么改呢?
skylkj 2008-05-07
  • 打赏
  • 举报
回复
VixTag := CreateVix(PChar(@mpegPath[1]),PChar(@vixPath[1]),Pchar(@fileName[1]),@error,jj);
beihaojia 2008-05-07
  • 打赏
  • 举报
回复
楼上的兄弟,按照你说的进行修改,还是一样的错,估计就是哪里传值的问题
blazingfire 2008-05-07
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
VixTag,pp:integer;
a,b:integer;
jj:PInt;
mpegPath,vixPath,fileName:string;
error: array[0..255] of Char;
begin
mpegPath:= 'D:\Clips\@A084A01.mpg' ;
vixPath:= 'D:\Clips\';
fileName:= '@A084A01' ;
///**!!error:= 'p';
pp := 2;
jj:= @pp;
VixTag := CreateVix(PChar(mpegPath),PChar(vixPath),Pchar(fileName),error,jj);
if VixTag <>0 then
edit1.Text:=inttostr(VixTag)
else
edit1.Text:='error';

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧