#include static void buildNames(const std::vector &input, std::vector &output) { if (input.size() == output.size()) return; for (auto &it : input) output.push_back(it.c_str()); } void test() { static Ort::Env env; static Ort::SessionOptions sessionOptions; static Ort::Session *session_ = new Ort::Session(env, "/home/yizhi/Develop/ai-box/models/test.onnx", sessionOptions); static std::vector inputNames_; static std::vector inputNames_c_; static std::vector inputValues_; static std::vector outputNames_; static std::vector outputNames_c_; static std::vector outputValues_; inputNames_.emplace_back("a"); inputNames_.emplace_back("b"); outputNames_.emplace_back("c"); outputValues_.emplace_back(Ort::Value{nullptr}); static std::vector shapeA = {3, 4}; static std::vector shapeB = {4, 3}; static float inputA[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; static float inputB[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120}; auto memoryInfo = Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeDefault); inputValues_.emplace_back(Ort::Value::CreateTensor(memoryInfo, inputA, sizeof(inputA), &shapeA[0], shapeA.size(), ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT)); inputValues_.emplace_back(Ort::Value::CreateTensor(memoryInfo, inputB, sizeof(inputB), &shapeB[0], shapeB.size(), ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT)); buildNames(inputNames_, inputNames_c_); buildNames(outputNames_, outputNames_c_); const char **ptr = &inputNames_c_[0]; for (int i = 0; i < inputNames_c_.size(); ++i) { printf("input [%d] = %s\n", i, ptr[i]); } Ort::RunOptions runOption; printf("start run\n"); session_->Run(runOption, &inputNames_c_[0], &inputValues_[0], inputNames_.size(), &outputNames_c_[0], &outputValues_[0], outputNames_.size()); printf("end run\n"); } int main(int argc, char **argv) { Ort::Env env; test(); // ai::ORTSession session(nullptr, 0); return 0; }