日記帳

日記です。

MinGW の windres を UNC パスで使う

MinGWgcc を MSYS 上で使っていてかつリソースコンパイラの windres を使っていてかつそれを共有フォルダ上でUNCパスで使わないといけない人が世の中に何人いるのでしょうか? 何人いるかは知りませんけども使うと以下のように怒られます.

% pwd
//asane/asazake/some/path
% windress -i menu.rc -o menu.o
ほげほげ CMD.EXE ふがふが
UNC ほげほげ Windows ふがふが
gcc: menu.rc: No such file or directory
gcc: warning: '-x c' after last input file has no effect
gcc: no input files

(ほげふがの部分はエラーメッセージが文字化けしてます)

これはどうも CMD.EXE から子プロセスを起動する際にカレントディレクトリがUNCパスかどうかのチェックする機構があるらしくてそれに(たぶんgccを呼びだすときに?)ひっかかっているようです.UNC パスじゃない場所では問題なく動くのドライブ割当てとかすればいいんですけど面倒だしなんとかならないかと思ってたらなんとかなるらしいです.

方法は regedit を起動して /HKEY_CURRENT_USER/Software/Microsoft/Command Processor に DisableUNCCheck という項目をDWORD値で作って1にするだけです.するとチェック機構が無効になって UNC パス上でも MinGW の windres が使えるようになります.

以上,今年最初のあまり役に立たないバッドノウハウをお届けしました.