首页
社区
课程
招聘
[求助]dll重载函数情况
发表于: 2009-10-26 21:31 6231

[求助]dll重载函数情况

2009-10-26 21:31
6231
在dll中定义两个重载的函数,在应用程序中调用。用od一看,里面就是两个相同的函数名,请教一下,系统如何区分调用的是哪个函数?(看起来名字相同,那么在构建导入表时,系统怎么区分的),谢谢了!!
//---------ddd.h--------------
#ifdef MYLIBAPI
#else
#define MYLIBAPI   __declspec(dllimport)
#endif

  MYLIBAPI int     add(int a,int b);
  MYLIBAPI float     add(float a,float b);
//----------------ddd.cpp-------------
#define MYLIBAPI     __declspec(dllexport)
#include "ddd.h"

int    add(int a,int b)
{
        return a+b;
}
float     add(float a,float b)
{
                return a+b;
}
//-------------应用程序------------------
#include <stdlib.h>
#include <stdio.h>

#include "ddd.h"

void main()
{
        int a=add(1,2);
        float bb,cc=1.1f,dd=2.2f;
        bb=add(cc,dd);
        printf("%d %f\n",a,bb);
}
//------------od中的情况-------------------

地址=0040102E
反汇编=call    dword ptr [<&ddd.add>]
目标文件=ddd.10001020

地址=00401059
反汇编=call    dword ptr [<&ddd.add>]
目标文件=ddd.10001050

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
看图
上传的附件:
2009-10-27 12:33
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=exile;704483]看图
[/QUOTE]
先谢谢你了,这个贴子看的人不少,目前就你一人回复。是不是我问的太弱的。。呵呵。。
问题:
但od中只显示了两个"add"
为什么,用dependendcy看了一下,就是“?add@@YAHHH@Z”这样的符号,这个符号看起来像是编译器处理时的那些符号,而像其它DLL里面函数名字都挺好看的:WriteFile
是不是因为,dllexport导出的是默认符号,而“好看”的那些是用.def导出的?
呵呵。。
还有,若用GetProcAddress调用add函数,如果是上面那个符号的话,是用“?add@@YAHHH@Z”和“?add@@YAMMM@Z”呢?
还是,"add"?
若是add,是不是又面临分辨重载函数的困境。。
望再赐教。。谢谢。。
2009-10-30 21:05
0
雪    币: 300
活跃值: (179)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
3#
暂且不管你的exe的编译结果和运行结果是否就如你预期的那样。
如果真的编译通过了,并且是你预期的结果,那么就是在了解的时候第一个add链接到int型的那个add,第2个链接到float的add,就是说在编译的时候就已经决定了第一处add将来要去找?add...(反正是int)这个函数。
第二个,你用“GetProcAddress调用add函数”,如果是GetProcAddress(XXX,""add),很简单,直接给你说没有找到这个函数就完了。你要想调用,好的,按实际导出的那个什么?add...的鬼东西来写那一串
2009-11-2 21:36
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵呵。。谢谢啊。。我回头再试试。。
2009-11-4 15:05
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
没有看明白 郁闷了
2009-11-4 15:07
0
游客
登录 | 注册 方可回帖
返回
//