尝试使用 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 继承

尝试从 C++/CLI 调用非托管 C++ 时解决错误

如何为非托管 c dll 创建 c++\cli 包装器

在 C++/cli 中使用 System::IO::File::ReadAllLines()

C++/CLI 包装器实现错误