diff --git a/fastdeploy/runtime/backends/ort/ort_backend.cc b/fastdeploy/runtime/backends/ort/ort_backend.cc index c9dfee821..ccb6ac088 100644 --- a/fastdeploy/runtime/backends/ort/ort_backend.cc +++ b/fastdeploy/runtime/backends/ort/ort_backend.cc @@ -31,6 +31,16 @@ namespace fastdeploy { std::vector OrtBackend::custom_operators_ = std::vector(); +std::wstring ToWstring(const std::string &str) { + unsigned len = str.size() * 2; + setlocale(LC_CTYPE, ""); + wchar_t *p = new wchar_t[len]; + mbstowcs(p, str.c_str(), len); + std::wstring wstr(p); + delete[] p; + return wstr; +} + bool OrtBackend::BuildOption(const OrtBackendOption& option) { option_ = option; if (option.graph_optimization_level >= 0) { @@ -47,7 +57,12 @@ bool OrtBackend::BuildOption(const OrtBackendOption& option) { session_options_.SetExecutionMode(ExecutionMode(option.execution_mode)); } if (!option.optimized_model_filepath.empty()) { +#if (defined(_WIN32) || defined(_WIN64)) + session_options_.SetOptimizedModelFilePath( + ToWstring(option.optimized_model_filepath).c_str()); +#else session_options_.SetOptimizedModelFilePath(option.optimized_model_filepath.c_str()); +#endif } #ifdef WITH_DIRECTML