关于DLL输出函数的格式——答得好另有奖(100分)

  • 主题发起人 主题发起人 游游
  • 开始时间 开始时间

游游

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是两个DLL输出函数
??0Cards@@QAE@XZ
?ShowCard@Cards@@QAEHPAVCDC@@GPAUtagRECT@@GPAUtagSIZE@@@Z
有谁能详细解释一下以上格式的含义?
如ShowCard应该是原函数名吧?Cards大概是类名了?
那么“@”、“@@”、“@@@”又代表什么意思呢?
“?”、“??”说明什么?“0”呢?
许多函数里都包含UAE、QAE、XZ、Z,what is meaning?
等等……
如果谁解答相信准确全面,另有重奖!!!
 
再加基本分100分!!!
附加分可以商量!!!
 
ShowCard::Cards 后面是参数类型吧
 
有可能,但据我所知无法仅从DLL文件中获取函数参数类型(论坛里的多个问题好象对此
已做出结论)。
放心,你的答案至少已经能获得10分!!!^_^
 
运行
tdump.exe your.dll >c:/see.txt
查看c:/see.txt,如果那个dll是borland的开发系统写的,
可以在dll查到还原后的函数名称、调用的参数类型,
返回的类型则不能知道。
 
我也想知道,像这样的怎么才能在DELPHI里面调用的,有谁能说的详细写吗?
可以给加分的。。。。。。
thank!!!!
 
参数的类型不太好确定...
 
不规则的函数名字这样调用:
function my_function(参数): 返回类型; stdcall(或者其他); external 'xxx.dll' name '古怪的名字';
这样就可以用 my_function 来调用 古怪的名字 的函数
 
在DLL的源码加上extern "C" 即可输出正常的函数形式
 
这是一个常见问题。用VC的MFC类库写的DLL好像都有这个问题。微软的官方叫法好像叫做——命名损坏。具体的情况可以到微软看看,还有楼上的那位说的没错,加上extern "C"可以解决这个问题。
 
该问题继续有效,为鼓励解答,请PiPi.、confucius、plaw进入
问题“PiPi等有奖”加分。
 
如前所述,命名已经损坏。看到的名字不能说明问题。
VC我不了解多少,但是好像VC访问的方法是加入这个DLL的头文件来指明入口的
如果是自己写的就用extern C。
如果是找来的……:<俺也不知道。
 
这种C++的命名叫做mangle
当然并不是损坏的意思,而是用一定的命名方法来实现重载、包含一点信息等等
实际上包含了调用方法、调用的参数类型,但是不包含返回类型
borland的命名的方法和ms的不一样
borland的可以用tdump显示出来正常的名字
vc应该也有工具,不过我不熟悉
 
请继续或结束
 
那些乱符号是编译器自己生成的符号
内部会管理
函数的参数一般的工具是看不到的
要反汇编和动态跟踪堆栈和寄存器才知道
 
多人接受答案了。
 
后退
顶部