如何在VC++总调用DELPHI的动态链接库?(200分)

  • 主题发起人 主题发起人 wowen
  • 开始时间 开始时间
W

wowen

Unregistered / Unconfirmed
GUEST, unregistred user!
我用DELPHI做了一个最简单的动态链接库
如:function add(x:integer;y:integr):integer;stdcall;export;
result=x+y;
exports add name 'add';
用VC调用
如下:typedef int (*function)(int,int);
function RetF;
Ret=LoadLibrary("test.dll");//动态链接库名称

RetF=(function)GetProcAddress(Ret,"add");
int Ret;
Ret=RetF(3,4);

不能正常调用

如果:DLL定义如下
function add:integer;stdcall;export;
result=10;
exports add name 'add';
VC调用如下
typedef int (*function)( );
function RetF;
Ret=LoadLibrary("test.dll");//动态链接库名称

RetF=(function)GetProcAddress(Ret,"add");
int Ret;
Ret=RetF();
则Ret 值为10,正常

 
怎么又是这个问题,这下可以说200分来得太容易了 :-)
http://www.delphibbs.com/delphibbs/dispq.asp?LID=370025
 
wowen 老兄没发现是参数的问题吗?VC 里面也要定义成 stdcall 才对啊。
btw: 温柔一刀刚才在那边就已经伤了别人的心了,这边的分就给我吧。:-P
 
呵呵,我刚才差点看成 women 了。
 
to BaKuBaKu:

什么意思?我那个贴字就是告诉他应该定义成stdcall呀!
我伤了谁的心?别人伤了我的心才对!!!!!你可以去问老猫。
 
> 来自:alvinlv
> 呵呵。 温柔一刀 你这150分来的可真容易啊。 ( 其实是我好心痛 ! )

没有别的意思嘛,开开玩笑而已啦。
如果哪里冒犯了,请允许我说一声抱歉。对了老刀,你的注册里的 Email 是对的吧,我有些
事情想请教一下。
 
>>没有别的意思嘛,开开玩笑而已啦。
唉,如果你看到我回应的贴子就知道了(已经删除了,不说了)

>>你的注册里的 Email 是对的吧,
对的,但是最近很忙,如果简单还可以 :-)
 
> typedef int (*function)(int,int);
改成
typedef int APIENTRY (*function)(int,int);

另外,上面LoadLibrary用了Ret变量了,下面还用Ret作为RetF的返回值,
而且还改变了参数的类型,这个习惯可不好。
 
多人接受答案了。
 
后退
顶部