C工程化常见报错
1. 进程已结束,退出代码为 -1073741701 (0xC000007B)¶
【问题解析】进程退出代码 -1073741701 (0xC000007B) 通常表示 STATUS_INVALID_IMAGE_FORMAT,这意味着程序尝试加载一个无效的 DLL 文件。
【问题解决】
第一步,先把.lib、.dll复制到.exe同级目录下,运行是否报错(在这一步解决了)
第二步,想办法将动态链接库添加到环境变量
2. 进程已结束,退出代码为 -1073741819 (0xC0000005)¶
【问题解析】进程退出代码 -1073741819 (0xC0000005) 通常表示 STATUS_ACCESS_VIOLATION,这意味着程序尝试访问它没有权限访问的内存地址
【问题解决】字符串编程上的错误,导致内存出错
3. 进程已结束,退出代码为 -1073740791 (0xC0000409)¶
const char *model_path = "D:/Projects/CLionProjects/test/model4.onnx";
OrtSession *session;
ORT_ABORT_ON_ERROR(
g_ort->CreateSession(env, model_path, session_options, &session));
verify_input_output_count(session);
报错:
Load model from 悌勫€讲鏁懀饨充眱娼╁伄娼叉暘鐟b匠鏁寸懗娲懐姹モ复婀‘ failed:Load model 悌勫€讲鏁懀饨充眱
娼╁伄娼叉暘鐟b匠鏁寸懗娲懐姹モ复婀‘ failed. File doesn't exist
【问题解析】
- 进程退出代码
-1073740791 (0xC0000409)通常表示STATUS_STACK_BUFFER_OVERRUN,这意味着程序检测到了堆栈缓冲区溢出 - ONNX使用
ORTCHAR_T类型表示模型路径,需要使用宽字符表示路径,尤其是在路径包含非ASCII字符时
【问题解决】
ORTCHAR_T *model_path = L"D:/Projects/CLionProjects/test/model4.onnx";
- 使用
L前缀将字符串转为宽字符字符串 - 使用
ORTCHAR_T类型表示模型路径
4. Output tensor is not float type.¶
Output tensor is not float type.
?[0;93m2025-03-13 11:04:10.1041634 [W:onnxruntime:, execution_frame.cc:876 onnxruntime::ExecutionFrame::VerifyOutputSize
s] Expected shape from model of {-1} does not match actual shape of {1,1} for output predictions?[m