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;
问题已定位,高通接口 二进制不兼容,导致失败。
详细原因:
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