Я пытаюсь загрузить строку из моей таблицы Strin в DLL-файле, над которым я работаю. Вот функция, которая должна загружать строку в std::wstring
(так как в моем проекте используется кодировка Unicode).Метод LoadString() не работает в C++
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 байта. Таким образом, есть вероятность, что вы должны выполнить «преобразование байтов» ... что-то вроде m_raw_content.length() * sizeof (wchar_t), конечно, в зависимости от реализации 'output.Format'. –
переменная 'output' предназначена только для диагностики. Я написал это потому, что этот метод не работает. – Victor
Являются ли строковые ресурсы встроенными в DLL? – benjymous