我需要从本机C ++类库中调用一些C#代码。类库在共享dll中使用MFC。感谢this Stackoverflow post,我最近了解到可以使用/ clr选项仅编译选定的文件。这很好,从设计角度和实际角度来看,它似乎都是一种干净的方法,因为最小的重建和预编译头功能与/ clr不兼容。
所以我继续添加一个新的C ++类,设置/ clr选项并编写一些代码来调用.Net dll。到目前为止这么好,每个编译甚至智能感知都是偶然的。但在运行时我遇到了问题。当我使用单元测试项目中的类库时,我得到一个断言。
我没有堆栈跟踪,但断言是在mfc dll(在我的情况下为mfc120d.dll)中触发的 dllmodul.cpp在此行的函数InternalDllMain
VERIFY(AfxInitExtensionModule(controlDLL, hInstance));
这在启动时,在运行任何测试用例之前以及对.Net代码的任何调用之前发生。当我从MFC应用程序链接库时,一切正常。
发生了什么,我该如何解决?
答案 0 :(得分:0)
事实证明我不小心写了
#include "stdafx.h"
在我的C ++ / CLI .cpp文件中。我想,习惯的力量。删除包含修复了问题。