报错代码如下:
#include "onnxruntime_cxx_api.h"
// Load the model and create InferenceSession
Ort::Env env;
std::string mmodelPath = "path/to/your/onnx/model";
Ort::Session session(env, modelPath, Ort::SessionOptions{ nullptr });
报错如图
解决方法一
查看Session的源码:
struct Session : detail::SessionImpl<OrtSession> {
explicit Session(std::nullptr_t) {} ///< Create an empty Session object, must be assigned a valid one to be used
Session(const Env& env, const ORTCHAR_T* model_path, const SessionOptions& options); ///< Wraps OrtApi::CreateSession
Session(const Env& env, const ORTCHAR_T* model_path, const SessionOptions& options,
OrtPrepackedWeightsContainer* prepacked_weights_container); ///< Wraps OrtApi::CreateSessionWithPrepackedWeightsContainer
Session(const Env& env, const void* model_data, size_t model_data_length, const SessionOptions& options); ///< Wraps OrtApi::CreateSessionFromArray
Session(const Env& env, const void* model_data, size_t model_data_length, const SessionOptions& options,
OrtPrepackedWeightsContainer* prepacked_weights_container); ///< Wraps OrtApi::CreateSessionFromArrayWithPrepackedWeightsContainer
ConstSession GetConst() const { return ConstSession{this->p_}; }
UnownedSession GetUnowned() const { return UnownedSession{this->p_}; }
};
遵循这一行的参数类型
Session(const Env& env, const ORTCHAR_T* model_path, const SessionOptions& options);
修改报错代码为:
#include "onnxruntime_cxx_api.h"
// Load the model and create InferenceSession
Ort::Env env;
const ORTCHAR_T* modelPath = L"path/to/your/onnx/model";
Ort::Session session(env, modelPath, Ort::SessionOptions{ nullptr });
问题解决。
解决方法二
修改报错代码为:
#include "onnxruntime_cxx_api.h"
// Load the model and create InferenceSession
Ort::Env env;
std::string modelPath = "path/to/your/onnx/model";
#ifdef _WIN32
std::wstring w_modelPath = utils::charToWstring(modelPath.c_str());
session = Ort::Session(env, w_modelPath.c_str(), sessionOptions);
#else
session = Ort::Session(env, modelPath.c_str(), sessionOptions);
Ort::Session session(env, model_path, Ort::SessionOptions{ nullptr });