早上一看又是熟悉的红字:

按红字指引

cat /root/openharmony6.0/out/rk3568/error.log

ds高度怀疑接口调用混乱的问题,查找目的头文件:

find /root/openharmony6.0 -name "display_composer_type.h" 2>/dev/null

并不存在v1_3的display_composer_type.h

故需确定源码引用位置是否正确,若正确,进一步可排查BUILD.gn对应位置的引用

对应的源码位置:

vim /root/openharmony6.0/drivers/interface/display/composer/v1_3/include/idisplay_composer_interface.h

ds认为上图中实现为:【从用户提供的idisplay_composer_interface.h文件内容来看,问题很明显:这个头文件混合引用了不同版本的接口——它包含了v1_2版本的接口头文件,但同时又试图包含v1_3版本的类型定义文件。这是一种版本不一致的情况,导致编译失败。我需要仔细分析这个问题的本质。这个问题的核心是头文件中混合使用了不同版本的接口。从编程规范来看,同一模块应该使用统一版本的接口定义。v1_2和v1_3很可能是接口的不同迭代版本,混合使用会导致类型定义不一致。】

(备选:vi BUILD.gn   /display_composer_vdi_impl,但本次并不需修改)

解决方法:将上图中的v1_3修改为v1_2,并检查其他文件是否存在类似实现:

grep -r "v1_3" /root/openharmony6.0/drivers/interface/display/composer/v1_3/include/ 2>/dev/null

不存在其他v1_3实现

随后继续编译:

cd /root/openharmony6.0

./build.sh --product-name rk3568 --build-only-gn

编译成功

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐