gpt4 book ai didi

c# - 从 c# 调用的非托管 c++ dll,在 dll 中使用 CString 时崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:25 24 4
gpt4 key购买 nike

你好最优秀的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com