Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在DLL资源之间切换_C++_Visual C++_Mfc - Fatal编程技术网

C++ 在DLL资源之间切换

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解决方案,包括许多项目的工作。我的一个项目“App.exe”依赖于其他项目输出dll“SC.dll”

我通过App项目下的addreference选项添加了对其他项目的引用

我想通过使用资源dll在“基于选项”的语言之间切换。 我有另一个资源项目,生产阿拉伯语资源“SC_AR.dll”

我尝试基于该选项使用LoadLibrary,但失败了

  • “添加参考”方法是否错误
  • 如果没有,如何在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资源。