我有一个方便的类,可以在存储资源的不同 dll 之间切换。enum
每个 dll 使用其值注册自己(实例和其他信息) 。信息存储在静态字段中。当我需要切换资源句柄时,我使用具有特定模块enum
值的构造函数来切换当前资源句柄并保存旧资源句柄。
情况如下。我在带有算法的dll中获取当前模块状态,AfxGetModuleState
然后使用我方便的类将资源句柄切换到带有资源的dll,然后我再次AfxGetModuleState
在带有算法的dll中使用。AfxGetModuleState
带有算法的dll和我的方便类中返回的结构的地址是不同的。
我的应用程序是单线程的,因此返回的结构的地址AfxGetModuleState
必须相同(它必须是全局的),但它是不同的。
这会导致来自特定 dll 的资源无法加载,因为在我的方便类中设置为具有资源的 dll 的当前资源句柄在具有算法的 dll 中仍然为空并且CString::LoadString(nID)
失败。
我的应用程序的调试版本运行良好,但错误仅出现在releasewithdebug
.
PS:我是新手MFC程序员。