最新ソース (2016/03/13) を取得したら動かなかったのでその対応。

エラー

現象

Missing api-ms-win-core-path-l1-1-0.dll

DLLがないとのこと。
つい最近まではそんなことなかったのに。

原因

調べました。
どうも api-ms-win-core-path-l1-1-0.dll は Windows8 のみのdllのよう。
Windows 8 API Sets にありました。

今回は、PathCchRemoveFileSpec関数を使う修正が入ったため、Windows7で動作しなくなったようです。

修正

公式の対応を待つべきですが、暫定修正。
Source/Common/File.cpp

1
2
3
#include 
#pragma comment(lib, "Pathcch.lib")
#endif

1
2
3
#include <Shlwapi.h>
#pragma comment(lib, "Shlwapi.lib")
#endif

に。

1
auto hr = PathCchRemoveFileSpec(&path[0], path.size());

1
auto hr = PathRemoveFileSpec(&path[0]);

に。

この2つの修正でエラーが出なくなります。
ただし、修正後の関数は deprecated ですし、バッファーオーバーランの危険があります。
あくまで暫定的な修正です。

Conclusion

Issue #224 で問題が上がってましたので、コメントしておきました。
公式が直してくれることを期待。

2016.03.26追記

私の修正が、PullRequest #237 としてマージされたため、現在は発生しません。