HarmonyOS鸿蒙Next中新创建的native工程,只引入 "hilog/log.h",使用日志方法都提示undefind symbol:OH_LOG_Print
HarmonyOS鸿蒙Next中新创建的native工程,只引入 “hilog/log.h”,使用日志方法都提示undefind symbol:OH_LOG_Print 新创建的native工程,只引入 “hilog/log.h”,使用日志方法都提示undefind symbol:OH_LOG_Print
在CMakeLists.txt里添加
add_definitions( "-DLOG_DOMAIN=0xd0d0" )
add_definitions( "-DLOG_TAG=\"testTag\"" )
#日志依赖 libhilog_ndk.z.so
target_link_libraries(entry PUBLIC libace_napi.z.so libhilog_ndk.z.so)
更多关于HarmonyOS鸿蒙Next中新创建的native工程,只引入 "hilog/log.h",使用日志方法都提示undefind symbol:OH_LOG_Print的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,你遇到的undefined symbol: OH_LOG_Print
错误通常是由于未正确链接日志库导致的。鸿蒙Next的日志功能依赖于libhilog_ndk.z.so
库,该库提供了OH_LOG_Print
等日志方法的实现。如果未在编译时链接该库,编译器将无法找到这些符号的定义。
要解决这个问题,你需要在编译配置中明确链接libhilog_ndk.z.so
库。具体步骤如下:
-
修改
CMakeLists.txt
文件:确保在CMakeLists.txt
中添加了libhilog_ndk.z.so
的链接。示例如下:target_link_libraries(your_target_name PRIVATE hilog_ndk)
其中,
your_target_name
是你的目标可执行文件或库的名称。 -
检查
BUILD.gn
文件:如果你使用BUILD.gn
作为构建脚本,确保在deps
或libs
中包含了libhilog_ndk.z.so
。示例如下:deps = [ "//third_party/hilog:libhilog_ndk.z.so", ]
-
确保头文件路径正确:确认
hilog/log.h
头文件的路径已正确包含在编译器的搜索路径中。 -
清理并重新构建:在修改配置后,执行清理操作并重新构建工程,以确保所有更改生效。
完成这些步骤后,OH_LOG_Print
等日志方法应该能够正常使用。如果问题仍然存在,请确认libhilog_ndk.z.so
库的路径是否正确,并确保没有其他编译配置问题。
在HarmonyOS鸿蒙Next中,如果你在native工程中引入hilog/log.h
并使用日志方法时遇到undefined symbol: OH_LOG_Print
的错误,可能是由于以下原因:
-
库未正确链接:确保在编译时正确链接了
libhilog_ndk.z.so
库。你需要在CMakeLists.txt
中添加以下行:target_link_libraries(your_target_name PRIVATE hilog_ndk)
-
头文件路径问题:确认
hilog/log.h
头文件的路径正确,并且编译器能够找到它。 -
NDK版本问题:确保你使用的NDK版本与鸿蒙Next的版本兼容。
检查并修正这些步骤后,重新编译工程应该可以解决undefined symbol
的问题。