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

标签 c# c++ dll dllimport cstring

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

相关文章:

c# - Gmail api 读取/解码消息 C#

c++ - 调整 vector 数组的大小

windows - Win32/DLL : The address that is jumped to when a DLL function is called?

c# - 将dll文件添加到C#项目

c# - ViewModel 中由模型事件触发的 WPF MVVM PropertyChanged 通知

c# - 使用内置 xml 序列化机制时对 xml 标签进行语言识别

c# - Web 配置中的连接字符串被忽略

c++ - 临时对象: automatic,线程的存储时长是多少,是静态的还是动态的?

c++ - 为什么 C++ 不支持 "nested-comment"?

c++ - Cmake 缺少 DLL