写一个带界面的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
解决问题可以再开分!!!!