组装.LoadFrom在包含MFC的cpp/CLI DLL上失败

Assembly.LoadFrom fails on a cpp/CLI DLL with MFC includes

本文关键字:CLI DLL 失败 cpp LoadFrom 包含 MFC 组装      更新时间:2023-10-16

我有一个c#应用程序,它使用Assembly.LoadFrom动态加载其他dll。如果dll是具有MFC支持的托管cpp,并且包含afxwin.h,则此方法将失败。

要重现此行为,只需使用向导创建一个新的托管cpp dll。在配置中添加MFC支持标志。直到您不将任何MFC标准包含在stdafx.h文件中,Assembly.LoadFrom才会失败。如果将#include "afxwin.h"放在stdafx.h文件中,Assembly.LoadFrom就会失败!(即DLL是空的!)

线索吗? ?

谢谢,Cabbi

我试着做你在visual studio 2010中描述的。

我将项目设置为使用MFC作为共享DLL,并在stdafx.h中包含afxwin.h。我成功地调用了AfxMessageBox()。所以它不能是你使用MFC的事实,它必须是别的东西。

我想你使用MFC作为共享DLL?此外,请写下您的完整的异常细节。使用进程监视器(http://technet.microsoft.com/en-us/sysinternals/bb896645)来检查你的应用程序试图加载哪些dll。也许这将揭示潜在丢失的dll(如MFC运行时)。使用Dependency Walker (dependencies .exe)查看你的混合模式库引用了哪些dll。

另外,如果您碰巧使用boost::thread静态链接,这将导致加载混合模式程序集失败。