关于vc++编写的dll

来源:百度知道 编辑:UC知道 时间:2024/05/28 17:36:12
请问下面这个自定义函数:
_getm@16

里面的_还有@ 都代表什么意思呢?

或者是没有意思,只是我多滤了?

@是分隔符而已,后面那个16表示你这个函数的参数长度共有16字节
至于前面的那个_表示你这个函数是以CALLBACK导出的

例如:
extern "C" __declspec(dllexport) LRESULT CALLBACK MyMessageProc(int code,WPARAM wParam,LPARAM lParam);

导出后就变成
_MyMessageProc@12

这个你应该是在编译的时候看到的吧 ,正常是没有这样写的,C++支持函数重载的原理就是在编译的时候把函数的名字重新命名,也就是说,当两个函数名一样的时候,经过编译后系统就会把两个函数重新命名,一般都带“@”

这是VC为你的自定义函数自动生成的一个函数名 @是一个标志用来区分于其他的函数名字
比如你有个重载的同名函数
那么VC就会用自动生成的函数名来加以区分 知道你调用的时候不会错乱

没事,你多虑了

这是C++的重载