Пытаюсь использовать MultiByteToWideChar api. для lpWideCharStr, когда я использую указатель с динамическим распределением памяти, он работает правильно. но теперь я должен использовать указатель со статическим распределением памяти, как вы видите в коде. и он не работает должным образом, верните 0.
что с этим не так?
как мне использовать указатель, выделенный статической памятью для lpWideCharStr в MultiByteToWideChar?
спасибо за ваши решения.
#include <windows.h>
#include <iostream>
#include "Shlwapi.h"
#pragma comment(lib,"shlwapi.lib")
void main(int argc, char *argv[]){
int iToSizeB = 0;
iToSizeB = MultiByteToWideChar(CP_UTF8, 0, argv[1], -1 , NULL, 0);
LPWSTR lpFileAddress[260] = {0};
int nResult = 0;
//MultiByteToWideChar function reurns 0 !!!
nResult = MultiByteToWideChar(CP_UTF8, 0, argv[1], -1, lpFileAddress[0], iToSizeB);
}





Наверное, вы имеете в виду это:
WCHAR lpFileAddress[260] = {0};
nResult = MultiByteToWideChar(CP_UTF8, 0, argv[1], -1, lpFileAddress, iToSizeB);
В вашем коде вы определяете массив указателей WCHAR: LPWSTR lpFileAddress[260] вместо массива WCHAR, как требуется: WCHAR lpFileAddress[260] = {0};
что за тип данных WSTR? это неизвестно в моей IDE. Я использую VS 2012.
iToSizeB может быть больше 260. КАБУМ!
Вы должны получить диагностическое сообщение для этого кода