将动态库更改为静态库时发生此问题 . 代码干净地编译但在应用程序启动期间,在初始化使用静态库的DLL期间声明 AfxGetModuleState() != AfxGetAppModuleState() 时,在 AfxCoreInitModule 中命中断言 . 从那时起,所有资源都无法加载 .

唯一提到这种情况发生在其他地方似乎是由于Boost.Thread库中的一个错误(例如在问题:Adding #include <boost/thread/mutex.hpp> breaks my ActiveX control?),虽然使用了一些Boost,但是线程库不是,所以这不是解决方案 .

静态库本身不包含任何MFC资源,仅使用某些序列化功能 . 它们最初被设置为定义它们自己的 DllMain ,这将调用 AfxInitExtensionModule ,而不像调用DLL仍在使用在dllmodul.cpp中定义的MFC提供的 DllMain ,其中发生此断言失败 .