问题:
    我搞了一个项目,其中需要写DLL,但是我发现上述两种声明的效果不一样的,前者编译的时候会有两个警告信息,而后者没有,请问到底是什么回事呢?附:我的参考代码 
__declspec(dllexport)__stdcall int VB_GetVideoStream(int iCardID, int  VideoStreamProc , char * pParam)
{
int i=0;
return i;}

解决方案 »

  1.   

    默认是 c 风格的调用方式
    使用 _stdcall 声明的函数用 pascal 风格的调用方式,我记得说 这两种方式的区别在于函数调用时压栈等堆栈操作不一样。_stdcall 更好一些。
    详细情况可以查资料
      

  2.   

    delphi 和 vb 默认的调用习惯是_stdcall
      

  3.   

    符号顺序问题
    申明的默认顺序应该是:
    [__declspec(...)] type [__declspec(...)][__stdcall/__cdecl] function(...);
    也就是说要写成这样:
    __declspec(dllexport) int __stdcall VB_GetVideoStream(int iCardID, int  VideoStreamProc , char * pParam)
    {
    int i=0;
    return i;
    }