Hello最优秀的Stackoverflowians
使用visual studio 2008 Team System,
我有一个c ++ dll(mfc静态链接的常规dll),它具有简单的功能
extern "C" __declspec(dllexport) int MyExportedFunction( )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( ))
CString tempString ;
....
}
来自c#应用程序的DLLImport到dll工作,我可以从我的c#代码调试器中进入这个函数 但是(是的,它来了!) 在函数“MyExportedFunction”中,你可以看到我实例化一个CString,并且这个CString实例化被整个应用程序崩溃了 并且调试器给了我
“无法退出。此流程已终止 在尝试另一次附加之前刷新进程列表“
有没有人对我可以做些什么来解决这个问题有任何建议?
问候 蜂音
答案 0 :(得分:1)
MFC程序需要一个管理new和delete的CWinApp对象实例theApp。
MFC常规DLL定义了自己的theApp对象,而MFC扩展DLL使用另一个模块的“theApp”。
我认为您的崩溃与缺少/未初始化的“theApp”一致。如果是这种情况,内存分配将失败,CString将使用内存分配。
两个可能性:
您从中调用MFC扩展DLL 。净。 (扩展DLL不 提供它自己的应用程序
您调用常规MFC DLL,其中未正确初始化theApp对象。