尝试使用 C++/CLI 时对 AfxInitExtensionModule 的断言
Posted
技术标签:
【中文标题】尝试使用 C++/CLI 时对 AfxInitExtensionModule 的断言【英文标题】:Assertion on AfxInitExtensionModule when trying to use C++/CLI 【发布时间】:2014-08-05 14:21:31 【问题描述】:我需要从本地 C++ 类库中调用一些 C# 代码。类库在共享 dll 中使用 MFC。感谢this *** post,我最近了解到可以使用 /clr 选项仅编译选定的文件。太好了,无论从设计角度还是从实际角度来看,这似乎都是一种干净的方法,因为最小的重建和预编译头文件功能与 /clr 不兼容。
所以我继续添加了一个新的 C++ 类,设置 /clr 选项并编写了一些代码来调用 .Net dll。到目前为止一切顺利,一切都可以编译,甚至 Intellisense 偶尔也会工作。但是在运行时我遇到了问题。当我使用单元测试项目中的类库时,我得到一个断言。
我没有得到堆栈跟踪,但断言是在 mfc dll(在我的情况下为 mfc120d.dll)中触发的 此行的函数 InternalDllMain 中的 dllmodul.cpp
VERIFY(AfxInitExtensionModule(controlDLL, hInstance));
这发生在启动时、运行任何测试用例之前以及调用 .Net 代码之前。当我从 MFC 应用程序链接库时,一切正常。
发生了什么,我该如何解决?
【问题讨论】:
【参考方案1】:原来是我不小心写的
#include "stdafx.h"
在我的 C++/CLI .cpp 文件中。我猜是习惯的力量。删除包含解决了问题。
【讨论】:
以上是关于尝试使用 C++/CLI 时对 AfxInitExtensionModule 的断言的主要内容,如果未能解决你的问题,请参考以下文章
将Vue-cli搭建的项目改造成多页面应用时对项目结构和配置的调整
C++/CLI 包装器尝试使用 MFC CObject 继承