C++ 在DLL资源之间切换
我在MFC解决方案,包括许多项目的工作。我的一个项目“App.exe”依赖于其他项目输出dll“SC.dll” 我通过App项目下的addreference选项添加了对其他项目的引用 我想通过使用资源dll在“基于选项”的语言之间切换。 我有另一个资源项目,生产阿拉伯语资源“SC_AR.dll” 我尝试基于该选项使用LoadLibrary,但失败了C++ 在DLL资源之间切换,c++,visual-c++,mfc,C++,Visual C++,Mfc,我在MFC解决方案,包括许多项目的工作。我的一个项目“App.exe”依赖于其他项目输出dll“SC.dll” 我通过App项目下的addreference选项添加了对其他项目的引用 我想通过使用资源dll在“基于选项”的语言之间切换。 我有另一个资源项目,生产阿拉伯语资源“SC_AR.dll” 我尝试基于该选项使用LoadLibrary,但失败了 “添加参考”方法是否错误 如果没有,如何在DLL之间切换 如果是,正确的方法是什么 如果您使用的是MFC,那么资源dll将加载到主文件中生成的样板文
如果您使用的是MFC,那么资源dll将加载到主文件中生成的样板文件中。(无法立即记住它)但搜索LoadResource()。您必须调用LoadLibrary,才能将hmodule传递到该文件中
请注意,如果要显示来自多个dll的资源,则必须小心不同资源dll中的对话框。如果您只是简单地交换DLL,就不会有问题。无需引用。MFC使用用户的Windows UI语言和应用程序的文件名搜索卫星DLL。要切换到另一个卫星,请调用LoadLibrary(),然后调用AfxSetResourceHandle() 当然,这是假设您正在通过MFC加载所有资源(例如,使用CString::LoadString而不是LoadResource)。如果直接调用API,则必须显式使用自己的卫星DLL句柄
PS更好。由于MFC不支持阿拉伯语,我在dll中创建了一个英语对话框和一个阿拉伯语对话框。根据语言属性,我将资源ID发送给Dialog的构造函数。
对于任何使用LoadString的字符串,我调用LoadLibrary,给它一个Dll名称,但返回NULL。请注意,我没有对英文DLL使用LoadLibrary,我只是添加了对它的引用。Microsoft有吗?是的,有。但是,它不适用于我的场景。As>>1-我正在使用我添加了引用的应用程序中的帮助程序DLL。>>2-我想本地化助手Dll本身。而且我不使用LoadLibrary。>>3-我创建了本地化项目,并希望根据选项在它们之间切换。这是正确的,但在嵌套资源加载中不起作用。加载主应用程序资源后,我需要设置另一个不加载的Dll资源,从而卸载主exe资源。