(問題が_wgetenvにあったことを示すためにタイトルが更新されました)
次のプログラムは 、変数に日本語のテキストを含むパスがある場合、エラー123で失敗します。Visual Studio 2005でコンパイルすると、同じプログラムが正常に動作します。
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv ) {
wchar_t *wcharVarName= L"TEMP_PATH";
wchar_t *longTempPath= _wgetenv(wcharVarName);
MessageBoxW( NULL, longTempPath, longTempPath, MB_OK | MB_ICONERROR);
int wlength = GetShortPathNameW(longTempPath,0,0);
int error= GetLastError();
if ( wlength == 0 ) {
char buf[1000];
sprintf ( buf, "error code %d",error);
MessageBox( NULL, "FAIL", buf, MB_OK | MB_ICONERROR);
}
else {
MessageBoxW( NULL, longTempPath, wcharVarName, MB_OK | MB_ICONERROR);
}
}
上記のプログラムをVisualStudio6で動作させる方法はありますか?
編集:TEMP_PATHはC:\tmp\漢字でした。_wgetenvは...を示しています