MFC 动态链接库(DLL)中创建窗口失败

毕业设计写一个关于网络的项目,在客户端把WSAAsyncSelect网络模型封装在了动态链接库中,点击运行,在UI线程中发现,创建一个CFrameWnd窗口的时候程序报错了,均显示ASSERT(afxCurrentResourceHandle != NULL)断言错误。

在网上找了好多资料,看(dou)不(bu)懂(xing),哈哈,后来在MFC自带的注释中发现了答案。

//
//TODO: 如果此 DLL 相对于 MFC DLL 是动态链接的,
//      则从此 DLL 导出的任何调入
//      MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到
//      该函数的最前面。
//
//      例如:
//
//      extern "C" BOOL PASCAL EXPORT ExportedFunction()
//      {
//          AFX_MANAGE_STATE(AfxGetStaticModuleState());
//          // 此处为普通函数体
//      }
//
//      此宏先于任何 MFC 调用
//      出现在每个函数中十分重要。这意味着
//      它必须作为函数中的第一个语句
//      出现,甚至先于所有对象变量声明,
//      这是因为它们的构造函数可能生成 MFC
//      DLL 调用。
//
//      有关其他详细信息,
//      请参阅 MFC 技术说明 33 和 58。
//

亲测好使

你可能感兴趣的:(MFC)