请熟悉VC 和DELPHI的朋友进来看看关于DELPHI调用VCDLL的问题?

                            
写一个带界面的DLL被DELPHI调用正常,但DELPHI退出时内存非法操作,请指点.      
  代码:  
  extern   "C"   __declspec(dllexport)   int   __stdcall     DataIE  
  (CWnd*   pWnd    
          ,   _ConnectionPtr   pConn    
          ,   int   iStyle //类型:1导入   0导出  
                            ,   .........  
          )  
  {  
  AFX_MANAGE_STATE(AfxGetStaticModuleState());  
  //CDataIEDlg   dlg(pWnd);  
  CDataIEDlg   dlg;  
  dlg.pConn   =   pConn;  
  dlg.iStyle   =   iStyle;  
  ............  
  dlg.DoModal();  
                    return   1;  
  }  
  调用正常,就是DELPHI主程序退出时异常!什么原因?  
  如果DELPHI不用标准调用那么参数就伟递错误。  
  我想应该不是我的代码问题,  
  因为我重新做了一个仅仅只显示对话框的DLL  
  ,里面什么事情都不错,也不传参数  
  结果还是和这个一样  
  我dialog退出时就是调用OnOK(),退出,dialog也没有用到什么指针之类的,用了一个_ConnectionPtr   pConn   ,退出的时候也给了NULL,  
  退出时第一个错误对话框  
  "0x00000000"指令引用的"0x00000000"内存.该内存不能为"read"  
  2:  
  Exception   EAccessViolation   in   module   a.exe   at   00000000.  
  Access   violation   at   address   0000000.read   of   address   00000000.  
   
  如果把__stdcall     改成   __cdecl则退出我的窗口的时候同时关掉Delphi主程序  
   
  ,这个让我十分地不解!!!  
  我也没调用什么关闭主程序的过程啊  
  甚至是关闭窗口没一句代码,MFC自身的OnOK()  
  真是没搞懂!!!!  
   
   
  改delphi程序也试了,各种组合基本上都试过了,不是这问题就是那问题  
  高人指点点指吧  
   
  调试DLL,结束程序后进程老不结束,强行终止进程,VC"Debug"信息:  
  First-chance   exception   in   GasJar.exe:   0xC0000005:   Access   Violation.  
  //上面这行一共有8000多行!!!  
  The   thread   0x9FC   has   exited   with   code   1   (0x1).  
  The   thread   0x87C   has   exited   with   code   1   (0x1).  
  The   thread   0x904   has   exited   with   code   1   (0x1).  
  The   thread   0x994   has   exited   with   code   1   (0x1).  
  The   program   'F:\Silly\Debug\GasJar.exe'   has   exited   with   code   1   (0x1).  
   
   
  这是什么回事?  
  请参见VC版:  
  http://community.csdn.net/Expert/topic/3083/3083974.xml?temp=.7201502  
   
  解决问题可以再开分!!!!  
 

查看回复