问题:
我搞了一个项目,其中需要写DLL,但是我发现上述两种声明的效果不一样的,前者编译的时候会有两个警告信息,而后者没有,请问到底是什么回事呢?附:我的参考代码
__declspec(dllexport)__stdcall int VB_GetVideoStream(int iCardID, int VideoStreamProc , char * pParam)
{
int i=0;
return i;}
我搞了一个项目,其中需要写DLL,但是我发现上述两种声明的效果不一样的,前者编译的时候会有两个警告信息,而后者没有,请问到底是什么回事呢?附:我的参考代码
__declspec(dllexport)__stdcall int VB_GetVideoStream(int iCardID, int VideoStreamProc , char * pParam)
{
int i=0;
return i;}
使用 _stdcall 声明的函数用 pascal 风格的调用方式,我记得说 这两种方式的区别在于函数调用时压栈等堆栈操作不一样。_stdcall 更好一些。
详细情况可以查资料
申明的默认顺序应该是:
[__declspec(...)] type [__declspec(...)][__stdcall/__cdecl] function(...);
也就是说要写成这样:
__declspec(dllexport) int __stdcall VB_GetVideoStream(int iCardID, int VideoStreamProc , char * pParam)
{
int i=0;
return i;
}