我在DLL中的静态功能,使用加载链,从资源加载字符串()。 当我打电话从该DLL这一切功能工作正常。 但是,当我打电话从其他模块(ActiveX控件),此功能加载链失败,错误ERROR_RESOURCE_NAME_NOT_FOUND。 我试图与AFX_MANAGE_STATE宏,但它并没有帮助。 有谁知道什么可能是这里的问题,该如何解决?
Answer 1:
如果字符串是在不同的dll的资源,那么你必须从其他模块设置的资源句柄,使其工作。 尝试使用设置资源句柄AfxSetResourceHandle方法。
Answer 2:
如果不通过句柄到模块实例LoadString
则使用默认的资源句柄。 默认情况下,默认的资源句柄为当前模块句柄。 所以,如果你调用LoadString
从已必需的字符串,然后模块都工作正常。 如果调用LoadString
从其他模块,它无法找到所需的字符串,你会得到错误ERROR_RESOURCE_NAME_NOT_FOUND
。 你可以通过调用覆盖它AfxSetResourceHandle
功能。
或者你可以明确地通过传递资源句柄来选择与资源模块LoadString
。
Answer 3:
请确保你在一个函数的调用开始AFX_MANAGE_STATE以便采取适当的(DLL或EXE)加载资源。 参见: http://msdn.microsoft.com/en-us/library/ba9d5yh5(VS.80).aspx
文章来源: MFC LoadString in dll fails