??3@YAXPAX@Z 是什么来的??

yzx65 2008-07-03 02:59:00
查看导出表的时候发现很奇怪的字符。??3@YAXPAX@Z。是什么来的??
...全文
542 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Darkneece 2008-07-08
  • 打赏
  • 举报
回复
你干吗要去掉?去掉了怎么链接?
yzx65 2008-07-03
  • 打赏
  • 举报
回复
可以去掉吗?怎么去掉?
K行天下 2008-07-03
  • 打赏
  • 举报
回复
C++ 编译函数的规则, 上面说的很详细了
lionc650 2008-07-03
  • 打赏
  • 举报
回复
学习....
  • 打赏
  • 举报
回复
Undecoration of :- "??3@YAXPAX@Z"
is :- "void __cdecl operator delete(void *)"
artman 2008-07-03
  • 打赏
  • 举报
回复
http://www.microsoft.com/china/community/program/originalarticles/techdoc/dll.mspx

C++编译时函数名修饰约定规则:
__stdcall调用约定:
1、以"?"标识函数名的开始,后跟函数名;
2、函数名后面以"@@YG"标识参数表的开始,后跟参数表;
3、参数表以代号表示:
X--void ,
D--char,
E--unsigned char,
F--short,
H--int,
I--unsigned int,
J--long,
K--unsigned long,
M--float,
N--double,
_N--bool,
....
PA--表示指针,后面的代号表明指针类型,如果相同类型的指针连续出现,以"0"代替,一个"0"代表一次重复;
4、参数表的第一项为该函数的返回值类型,其后依次为参数的数据类型,指针标识在其所指数据类型前;
5、参数表后以"@Z"标识整个名字的结束,如果该函数无参数,则以"Z"标识结束。
其格式为"?functionname@@YG*****@Z"或"?functionname@@YG*XZ",例如
int Test1(char *var1,unsigned long)-----“?Test1@@YGHPADK@Z”
void Test2() -----“?Test2@@YGXXZ”

__cdecl调用约定:
规则同上面的_stdcall调用约定,只是参数表的开始标识由上面的"@@YG"变为"@@YA"。
__fastcall调用约定:
规则同上面的_stdcall调用约定,只是参数表的开始标识由上面的"@@YG"变为"@@YI"。
VC++对函数的省缺声明是"__cedcl",将只能被C/C++调用.

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧