比方说我的代码是
extern "C" DLL_API int Sub(int lhs, int rhs)
{
return lhs - rhs;
}
按照标准,这个函数调用约定是__cdecl,我查的相关资料,很多地方都是说C++编译器在使用C编译的方式,对__cdecl约定的函数
的修饰方式是仅在输出函数名前加上一个下划线前缀。但是,我在《程序员的自我修养》里面看到有这样的话,
“默认情况下,MSVC把C语言的函数当做是__cdecl类型,这种情况下该函数不进行任何符号修饰。”
这句话是否有错误,还是说只是VC编译器是这样做的,而C++标准是会进行符号修饰?
另外在自己的测试的DLL中,使用dumpbin /EXPORTS **.dll,查看导出符号,结果在name列下有一个等式,是Sub=ILT+230<_Sub>,前面符号不变,后面符号前面加上了_,这个是debug模式下的,如果使用Release的话,name只有一个Sub。
那么,导出符号的名称到底是变了吗,在__cdecl的类型下?debug下左边和右边分别是什么意思呢?
求大神!!!