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)
这样写会出错的....
展开
 我来答
哈欠聊科技
2010-10-16 · TA获得超过422个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:139万
展开全部
因为你在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)
澄闻网
2010-10-16 · TA获得超过2789个赞
知道大有可为答主
回答量:4683
采纳率:0%
帮助的人:3134万
展开全部
贴出具体错误信息呢。
没有获取DLL里正确的函数地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
csx007700
2010-10-16
知道答主
回答量:48
采纳率:0%
帮助的人:21.8万
展开全部
检查下VC导出的调用约定。你在delphi中已经说了用stdcall,VC一定要用sdtcall才能成功调用,但是VC一般不用stdcall的,要手动声明。

有条件反汇编下0x74ebc9f1,跟踪看看堆栈情况,仔细找找问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-10-16
展开全部
调用的问题吧,login函数的两个参数是如何定义的,又是如何调用的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式