2009-04-04
_ [Mozilla]
updaterのエントリポイントの部分がうまくないので、パッチを書く。
gccでのエントリポイントはmain()であって、wmain()は使えない。-e wmainCRTStartupも通用しない。
XP_WINかつ__GNUC__のときはmain()を定義して、文字コードを変換した上でwmain()に渡すようにした。
具体的にはこうなる。
#if defined( XP_WIN ) && defined( WIN32 ) && defined(__GNUC__)
int main(int argc, char **argv){
wchar_t **argv_ = static_cast<wchar_t**>(malloc(argc * sizeof(wchar_t*)));
for(int i = 0; i < argc; i++){
int ws = MultiByteToWideChar(0, 0, argv[i], -1, NULL, 0);
argv_[i] = static_cast<wchar_t*>(malloc(ws * sizeof(wchar_t)));
MultiByteToWideChar(0, 0, argv[i], -1, argv_[i], ws);
}
return wmain(argc, argv_);
}
#endif