【发布时间】:2014-01-27 13:44:25
【问题描述】:
我正在尝试从我正在处理的 DLL 文件中的 Strin 表中加载一个字符串。这是应该将字符串加载到 std::wstring 的函数(因为我的项目使用 Unicode 字符集)。
void ErrorHandler::load_error_string()
{
m_hInst = AfxGetInstanceHandle();
wchar_t buffer[1024] = { '\0' };
std::size_t string_length = LoadStringW(this->m_hInst, this->m_error_id, buffer, 1024);
this->m_raw_content = std::wstring(buffer, string_length);
CStringW output;
output.Format(L"%d", m_raw_content.length());
AfxMessageBox(output);
}
我已经创建了最后三行来诊断该方法。 AfxMessageBox() 的输出是0。
我哪里错了?
【问题讨论】:
-
请记住,
string_length可能代表std::wstring的大小,而std::wstring具有wchar_t,可以是一个,对于instantece 2 个字节。因此,您有可能必须执行byte conversion... 之类的 m_raw_content.length()*sizeof(wchar_t),当然这取决于您的output.Format实现。 -
output变量仅用于诊断。我这样写是因为那个方法不起作用。 -
DLL中是否嵌入了字符串资源?
-
是的,它们嵌入在 DLL 中
-
那么,您检查
string_length的值了吗?价值是多少?
标签: c++ dll mfc resources string-table