我正在尝试在Windows商店中构建Boost.Regex
,并面临此问题:
...... \ libs \ regex \ build .. \ src \ w32_regex_traits.cpp(275):错误 C3861:'LoadStringA':找不到标识符 ...... \ libs \ regex \ build .. \ src \ w32_regex_traits.cpp(308):错误 C3861:'LoadStringW':未找到标识符
在MSDN中,我发现在Windows应用商店应用中禁止使用LoadString
。但是,我没有找到LoadString
的替换win32 API。
如果LoadString
没有替换Win32 api,我必须使用WinRT API(C ++ / CX)。似乎Windows::ApplicationModel::Resources::ResouceLoader
可用于从资源加载字符串。但是,我不知道如何使用现有参数调用R esourceLoader::GetString(String^ resource)
。
以下是Boost.Regex中的原始代码。任何人都可以告诉我如何从HINSTANCE
和资源uID
获取资源键(String)吗?
BOOST_REGEX_DECL std::wstring BOOST_REGEX_CALL w32_cat_get(const cat_type& cat, lcid_type, int i, const std::wstring& def)
{
wchar_t buf[256];
if(0 == ::LoadStringW(
static_cast<HMODULE>(cat.get()),
i,
buf,
256
))
{
return def;
}
return std::wstring(buf);
}
以下是ResourceLoader的示例代码:
auto loader = ref new Windows::ApplicationModel::Resources::ResourceLoader::GetForCurrentView();
String^ text = loader->GetString("Farewell");
这是MSDN中ResourceLoader类的引用:http://msdn.microsoft.com/zh-cn/library/windows/apps/windows.applicationmodel.resources.resourceloader.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-2
谢谢, 奕