char* ファイル名のみを受け入れる 3 番目の lib があります3rdlib_func_name(char* file_name)
。中国語または日本語でファイル名を指定すると、すべてがうまくいきません。
この lib を UNICODE ファイル名で開く方法はありますか? プログラムはWindowsで実行されています。
お返事をありがとうございます。
私たちも同様の問題を抱えています。幸いなことに解決策がありますが、それは少しトリッキーです。
ファイル/ディレクトリが既に存在する場合 -GetShortPathName
関数を使用できます。結果の「短い」パス名には、非ラテン文字が含まれていないことが保証されています。
GetShortPathNameW
て、「短い」パス文字列を取得します。WideCharToMultiByte
)。ここで、ファイル/ディレクトリがまだ存在しない場合、短いパス名を取得できない可能性があります。そのような場合は、最初に作成する必要があります。
いいえ、変更されたソースから再コンパイルできない限り、ありません (主要な作業です)。のような短いファイル名をサードパーティのライブラリに入力すると、うまくいくかもしれませんAHDF76~4.DOC
。これらのファイル名は ASCII を使用します。を参照してくださいGetShortPathName
。
文字列をローカル コード ページに変換してみてください。
setlocale(LC_ALL,"Japanese_Japan.932");
std::string file_name = convert_to_codepage_932(utf16_file_name);
3rdlib_func_name(file_name.c_str());
さもないと?
UTF-8 をサポートしていないのはウィンドウのせい;-)