delphi调用vc编写的dll,出现错误
vc中的char*对应于delphi的pchar吧,,这是vc里定义的函数:extern"C"_declspec(dllexport)intlogin(char*name...
vc中的char *对应于delphi的pchar吧,,
这是vc里定义的函数:
extern "C" _declspec(dllexport) int login(char *name,char *password)
这是delphi中定义的:
unit Ulogin;
interface
function login(name,password:pchar):Integer;stdcall;
implementation
function login;external 'login.dll' name 'login';
end.
....错误信息在图片中,,,,,
我以前写过,也是这种形式,没有错,就参数不一样,不知道sdtcall怎么在vc中声明,,
在delphi改是可以的..
不过extern "C" _declspec(dllexport) __stdcall int login(char *name,char *password)
这样写会出错的.... 展开
这是vc里定义的函数:
extern "C" _declspec(dllexport) int login(char *name,char *password)
这是delphi中定义的:
unit Ulogin;
interface
function login(name,password:pchar):Integer;stdcall;
implementation
function login;external 'login.dll' name 'login';
end.
....错误信息在图片中,,,,,
我以前写过,也是这种形式,没有错,就参数不一样,不知道sdtcall怎么在vc中声明,,
在delphi改是可以的..
不过extern "C" _declspec(dllexport) __stdcall int login(char *name,char *password)
这样写会出错的.... 展开
展开全部
因为你在C的这边函数声明没有使用STDCALL声明,而DELPHI用的则用了STDCALL故造成问题.
方法一: 改DELPHI代码:
function login(name,password:pchar):Integer;stdcall;
改成
function login(name,password:pchar):Integer;cdecl;
当C函数不使用STDCALL方式声明时, 默认的约定叫C declare (看字面意思就应该明白,C的函数声明方式)
DELPHI对应的就是cdecl
方法二: 改C部分代码
extern "C" _declspec(dllexport) int login(char *name,char *password)
改成
extern "C" _declspec(dllexport) __stdcall int login(char *name,char *password)
方法一: 改DELPHI代码:
function login(name,password:pchar):Integer;stdcall;
改成
function login(name,password:pchar):Integer;cdecl;
当C函数不使用STDCALL方式声明时, 默认的约定叫C declare (看字面意思就应该明白,C的函数声明方式)
DELPHI对应的就是cdecl
方法二: 改C部分代码
extern "C" _declspec(dllexport) int login(char *name,char *password)
改成
extern "C" _declspec(dllexport) __stdcall int login(char *name,char *password)
展开全部
贴出具体错误信息呢。
没有获取DLL里正确的函数地址。
没有获取DLL里正确的函数地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
检查下VC导出的调用约定。你在delphi中已经说了用stdcall,VC一定要用sdtcall才能成功调用,但是VC一般不用stdcall的,要手动声明。
有条件反汇编下0x74ebc9f1,跟踪看看堆栈情况,仔细找找问题。
有条件反汇编下0x74ebc9f1,跟踪看看堆栈情况,仔细找找问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-10-16
展开全部
调用的问题吧,login函数的两个参数是如何定义的,又是如何调用的?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询