3 pièce(s) jointe(s)
Migration 2005 ->2008 : 'char *' to 'LPWSTR'
Bonjour,
Je dois migrer un projet de Visual Studio 2005 à 2008 (avec un changement de la version du SDK de V5 à V6.0A) et il y a un bout de code qui ne compile plus :
Code:
1 2 3 4 5 6 7 8 9 10
| wchar_t WDirectoryToShare[MAX_PATH];
wchar_t WSharename[MAX_PATH];
swprintf_s(WDirectoryToShare,L"%S",DirectoryToShare);
swprintf_s(WSharename,L"%S",Sharename);
si502.shi502_netname = (char *)WSharename; // ici erreur de compilation
si502.shi502_max_uses = SHI_USES_UNLIMITED;
si502.shi502_current_uses = 0;
si502.shi502_path = (char *)WDirectoryToShare; // ici erreur de compilation |
J'ai parcouru les 3 fichiers du SDK concernés et il y a le typedef suivant :
Code:
typedef __nullterminated WCHAR *NWPSTR, *LPWSTR, *PWSTR;
puis
Code:
#define LMSTR LPWSTR
et un typedef struct :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| typedef struct _SHARE_INFO_502 {
LMSTR shi502_netname;
DWORD shi502_type;
LMSTR shi502_remark;
DWORD shi502_permissions;
DWORD shi502_max_uses;
DWORD shi502_current_uses;
LMSTR shi502_path;
LMSTR shi502_passwd;
DWORD shi502_reserved;
PSECURITY_DESCRIPTOR shi502_security_descriptor;
} SHARE_INFO_502, *PSHARE_INFO_502, *LPSHARE_INFO_502; |
Le compilateur n'admet pas donc pas le cast d'un wchar_t en WCHAR.
Il met 2 erreurs de compilation du type :
error C2440: '=' : cannot convert from 'char *' to 'LPWSTR'
Que dois-je faire alors ?
J'ai joint les 3 fichiers du SDK concernés.
Merci.
Tapiou.