你好最优秀的 Stackoverflowians
使用visual studio 2008团队系统,
我有一个具有简单功能的 c++ dll(mfc 静态链接的常规 dll)
extern "C" __declspec(dllexport) int MyExportedFunction( )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( ))
CString tempString ;
....
}
从 c# 应用程序到 dll 的 DLLImport 工作正常,我可以从我的 c# 代码的调试器进入这个函数 但是(是的,它来了!) 在函数“MyExportedFunction”中,如您所见,我实例化了一个 CString,当此 CString 实例化被命中时,整个应用程序崩溃 调试器给了我
“无法执行。进程已终止 在尝试另一个附加之前刷新进程列表”
有人对我可以做什么来解决这个问题有什么建议吗?
问候 嗡嗡声
最佳答案
MFC 程序需要一个 CWinApp 对象实例 theApp,它管理新建和删除。
MFC 常规 DLL 定义了它们自己的 theApp 对象,而 MFC 扩展 DLL 使用另一个模块的“theApp”。
我认为您的崩溃与丢失/未初始化的“theApp”一致。如果是这种情况,内存分配将失败,CString 将使用内存分配。
两种可能性:
您从 。网。 (扩展 DLL 不 提供自己的应用程序)
您调用常规 MFC DLL,其中 theApp 对象未正确初始化。
关于c# - 从 c# 调用的非托管 c++ dll,在 dll 中使用 CString 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2242529/