问题已定位,高通接口 二进制不兼容,导致失败。
详细原因:
K70 Pro手机系统版本高,必须使用新的SDK,否则在读取so符号表正确,但进行调用qnn_net->getBackendBuildId()函数指针时错误,从而crash;
deviceCreate,参数设置和初始化设备,也会失败。
如下2个重要结构体失败:
typedef struct {
// 新增函数指针xxx
} QNN_INTERFACE_VER_TYPE;
typedef struct {
// 新增成员
const char* const* enableGraphs;
/// Used with QNN_CONTEXT_CONFIG_MEMORY_LIMIT_HINT
uint64_t memoryLimitHint;
/// Used with QNN_CONTEXT_CONFIG_PERSISTENT_BINARY
uint8_t isPersistentBinary;
/// Used with QNN_CONTEXT_CONFIG_BINARY_COMPATIBILITY
QnnContext_BinaryCompatibilityType_t binaryCompatibilityType;
};
} QnnContext_Config_t;
解决方案:QNN头文件和so,替换为2.19
测试手机:K70 Pro、14
问题已定位,高通接口 二进制不兼容,导致失败。
详细原因:
K70 Pro手机系统版本高,必须使用新的SDK,否则在读取so符号表正确,但进行调用qnn_net->getBackendBuildId()函数指针时错误,从而crash;
deviceCreate,参数设置和初始化设备,也会失败。
如下2个重要结构体失败:
typedef struct {
// 新增函数指针xxx
} QNN_INTERFACE_VER_TYPE;
typedef struct {
// 新增成员
const char* const* enableGraphs;
/// Used with QNN_CONTEXT_CONFIG_MEMORY_LIMIT_HINT
uint64_t memoryLimitHint;
/// Used with QNN_CONTEXT_CONFIG_PERSISTENT_BINARY
uint8_t isPersistentBinary;
/// Used with QNN_CONTEXT_CONFIG_BINARY_COMPATIBILITY
QnnContext_BinaryCompatibilityType_t binaryCompatibilityType;
};
} QnnContext_Config_t;
解决方案:QNN头文件和so,替换为2.19
测试手机:K70 Pro、14