Assembly.LoadFrom在包含MFC的c ++ / CLI DLL上失败

时间:2013-06-13 17:07:28

标签: c# c++ dll

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

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

任何线索???

谢谢, Cabbi

1 个答案:

答案 0 :(得分:1)

我尝试按照您在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(depends.exe)查看混合模式库所指的DLL。

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