Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用公共语言运行时支持(/clr)调用mfc dll时,无法运行mfc应用程序_C++_.net_Mfc_Clr_Managed - Fatal编程技术网

C++ 使用公共语言运行时支持(/clr)调用mfc dll时,无法运行mfc应用程序

C++ 使用公共语言运行时支持(/clr)调用mfc dll时,无法运行mfc应用程序,c++,.net,mfc,clr,managed,C++,.net,Mfc,Clr,Managed,我需要将公共语言运行时支持(/clr)添加到mfc dll项目中,以便在其中使用托管代码。 根据如何使用msdn中的/clr编译MFC和ATL代码,我对所有项目进行了一些设置 我做了很多测试。但是仍然无法运行我的应用程序,尽管我只向项目添加了/clr支持,而没有添加任何托管代码 详情见下文: 异常、调用堆栈、输出信息、使用和不使用/clr之间的输出信息差异和依赖项dll请参见 我无法从调用堆栈中获得任何有用的信息。我甚至不知道在哪里添加调试断点。无论如何,在应用程序的InitInstance()

我需要将公共语言运行时支持(/clr)添加到mfc dll项目中,以便在其中使用托管代码。 根据如何使用msdn中的/clr编译MFC和ATL代码,我对所有项目进行了一些设置

我做了很多测试。但是仍然无法运行我的应用程序,尽管我只向项目添加了/clr支持,而没有添加任何托管代码

详情见下文:

异常、调用堆栈、输出信息、使用和不使用/clr之间的输出信息差异和依赖项dll请参见

我无法从调用堆栈中获得任何有用的信息。我甚至不知道在哪里添加调试断点。无论如何,在应用程序的InitInstance()处添加断点太晚了

似乎是根据输出信息加载DLL导致的异常。但我不知道真正的原因

否则,我已经从msdn下载了一个示例解决方案,请参见。该示例包含一个mfc应用程序,该应用程序使用/clr支持调用mfc dll。而且效果很好。当我将mfc dll(支持/clr)添加到此示例中时,它也可以正常工作。我真的不明白为什么它不能在我的解决方案中工作。我已将项目的属性设置与示例解决方案进行了比较。似乎没什么特别的

我确实需要帮助,有什么建议吗?

谢谢大家

我通过延迟加载cotaines/clr在调用它的项目中支持的dll解决了这个问题。有关如何延迟DLL的信息,请参阅。这似乎是由混乱的非托管和托管初始化引起的异常


非托管初始化和托管初始化分为两个不同的阶段。非托管初始化首先发生(通过DllMain),然后托管初始化通过.NET支持的名为.cctor的构造发生有关如何使用See编译MFC和ATL代码的详细信息,请参见

,请参见屏幕截图上的异常——发生在哪里?exe(或dll?)模块的哪种方法/功能?嗨,Ruslan Garipov。谢谢你的回复。在我的exe中运行exe时发生异常。是exe Windows本地还是.NET模块?分配内存时,AAVE是一个完全不显著的错误,堆损坏是C++代码中非常标准的错误,与CL/CLR无关。如果从XP升级,您将遥遥领先。当前Windows版本中的调试堆是诊断此类错误的极好工具。强烈建议也打开符号服务器。