关于extern "C"和_stdcall的区别
DLL的导出函数一般设置为如下:
extern "C" int _stdcall Func(int n);
这里有一点不明白,extern "C"是按C的编译方式编译函数名,而又限定为_stdcall的调用,则又按c++的方式编译函数名?!
这两个到底怎么区别?!
[解决办法]
_stdcall不是C++独有的。
[解决办法]
_stdcall 用来指定函数调用方式问题 比如 参数从右到左压入栈中
[解决办法]
两者毫无关联,
extern "C"是以C语言的方式编译,而_stdcall只是一种调用约定方式,指的就是参数入栈规则而已。
[解决办法]
template 不可以出现在extern "C"内部,或者后面
因为C的名字是固定的,只能是同一个名字。
错误信息如下:
error: template with C linkage
好吧 !
class 可以是 extern "C"的