1

我有一个 C# 应用程序,它使用Assembly.LoadFrom. 如果 dll 是具有 MFC 支持的托管 cpp 并且任何包含此类afxwin.h.

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

有什么线索???

谢谢, 出租车司机

4

1 回答 1

1

我尝试按照您在 Visual Studio 2010 中的描述进行操作。

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

我想您使用 MFC 作为共享 DLL?另外,请写下您的完整异常详细信息。使用进程监视器 ( http://technet.microsoft.com/en-us/sysinternals/bb896645 ) 检查您的应用尝试加载哪些 DLL。也许这将揭示可能丢失的 DLL(如 MFC 运行时)。使用 Dependency Walker (depends.exe) 查看混合模式库引用的 DLL。

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

于 2013-06-13T23:09:14.503 回答