В PIVX (разветвленный из биткойн-кода) есть следующий код
static boost::interprocess::file_lock lock(pathLockFile.string().c_str());
в bool AppInit2 () в файле src \ init.cpp.
Если программа работает в Windows,path может содержать разные символы Unicode (из разных кодовых страниц), и pathLockFile.wstring () предоставит правильную строку, но pathLockFile.string () будет содержать неправильный путь, если есть хотя бы 2 символа из разных кодовых страниц.
Какой минимальный патч можно предложить, чтобы избежать проблем с путями Unicode?
Обновление:
- GetShortPathNameW не является хорошим решением, поскольку путь к результатам также может содержать символы Unicode
- Добавить интерфейс wchar_t для boost не просто, потому что я планировал, что мой патч будет применен только к проекту PIVX
- Может быть, я могу установить в текущем каталоге каталог данных PIVX и указать только имя файлак классу file_lock, но это довольно сложно - проект PIVX является многопоточным