openharmony6.0 | rk3566 | ‘v1_3/display_composer_type.h‘ file not found
摘要:在OpenHarmony6.0编译过程中发现接口版本混乱问题,头文件idisplay_composer_interface.h混合引用了v1_2和v1_3版本的接口定义。通过将v1_3修改为v1_2版本并检查其他文件后,成功完成rk3568产品的编译。该问题凸显了保持接口版本一致性的重要性。
·
早上一看又是熟悉的红字:

按红字指引
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

编译成功
更多推荐



所有评论(0)