在C ++ / CLI中访问嵌入式资源

时间:2013-05-26 13:25:54

标签: c# .net c++-cli resx

我已经使用C#了一段时间,而这次我正在尝试用C ++编写.NET应用程序。在C#中,我能够很容易地从代码中访问托管资源,资源文件的名称就像一个类,所以如果我在一个名为cba.resx的资源文件中有一个名为“abc”的字符串,那么只需写cba.abc返回资源文件中的字符串。甚至intellisense也适用它。同样适用于图标等。

是否有可能在C ++中做同样的事情,如果是这样,怎么样?或者如果没有,访问资源文件中字符串/图标的最简单方法是什么?

1 个答案:

答案 0 :(得分:5)

在Visual Studio中,C#项目有一个resx文件设计器和一个属性类生成器。 C ++ / CLI项目只获取resx文件设计器。两者都获得了构建步骤,以便将已编译的资源嵌入到程序集中。

您可以自己编写一个Properties类,或者只需在代码中访问您需要它们的资源:

auto resourceAssembly = Reflection::Assembly::GetExecutingAssembly();
// .Resources is the name generated by resxgen, e.g., from the input file name Resources.resx
auto resourceName = resourceAssembly->GetName()->Name + ".Resources"; 
auto resourceManager = gcnew Resources::ResourceManager(resourceName, resourceAssembly);
auto String1 = cli::safe_cast<String^>(resourceManager->GetObject("String1"));