我用C++写了一个DLL
在调用的时候不出错,但在调用过程执行完后出错:
read address of 0x00000001
请教怎么解决?
(动态调用时不出错,但我需要静态调用)

解决方案 »

  1.   

    代码都正常的不能再正常了,在一个过程里*静态*调用,调用不出错的,到调用过程运行到end的地方出错。
      

  2.   

    而且,原来用delphi写的dll不会出错的,这回用c++写了,用delphi调用就出错了。
      

  3.   

    估计就是调用约定的问题了,加个stdcall,C和Pascal的参数默认压栈方式正好相反
      

  4.   

    釋放出問題,檢查你的dll的釋放處理部分!!
      

  5.   

    也许调用的时候用CDECL的方式;
      

  6.   

    可能参数约定不同。
    加个stdcall吧。
      

  7.   

    可能参数约定不同,c++,delphi两边都要加stdcall
      

  8.   

    C++动态连接库:
    #define DllImport   extern "C" __declspec(dllimport)
    DllExport int EYC_Ent_ReadRec(int nDevID, ComStru Com, pEntRec pEr);
    (实现部分有点长,是读取门禁记录的,不方便贴,我感觉不会错在里面)Delphi里:
        function EYC_Ent_ReadRec(nDevID: Integer; Com: ComStru;  pEr: pEntRec): Integer; stdcall;external 'EYICCOM.dll' name 'EYC_Ent_ReadRec';
      

  9.   

    DllExport int  __sdtcall EYC_Ent_ReadRec(int nDevID, ComStru Com, pEntRec pEr);
      

  10.   

    sorry!!
    DllExport int __stdcall EYC_Ent_ReadRec(int nDevID, ComStru Com, pEntRec pEr);