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

3 回复

在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库。具体步骤如下:

  1. 修改CMakeLists.txt文件:确保在CMakeLists.txt中添加了libhilog_ndk.z.so的链接。示例如下:

    target_link_libraries(your_target_name PRIVATE hilog_ndk)
    

    其中,your_target_name是你的目标可执行文件或库的名称。

  2. 检查BUILD.gn文件:如果你使用BUILD.gn作为构建脚本,确保在depslibs中包含了libhilog_ndk.z.so。示例如下:

    deps = [
        "//third_party/hilog:libhilog_ndk.z.so",
    ]
    
  3. 确保头文件路径正确:确认hilog/log.h头文件的路径已正确包含在编译器的搜索路径中。

  4. 清理并重新构建:在修改配置后,执行清理操作并重新构建工程,以确保所有更改生效。

完成这些步骤后,OH_LOG_Print等日志方法应该能够正常使用。如果问题仍然存在,请确认libhilog_ndk.z.so库的路径是否正确,并确保没有其他编译配置问题。

在HarmonyOS鸿蒙Next中,如果你在native工程中引入hilog/log.h并使用日志方法时遇到undefined symbol: OH_LOG_Print的错误,可能是由于以下原因:

  1. 库未正确链接:确保在编译时正确链接了libhilog_ndk.z.so库。你需要在CMakeLists.txt中添加以下行:

    target_link_libraries(your_target_name PRIVATE hilog_ndk)
    
  2. 头文件路径问题:确认hilog/log.h头文件的路径正确,并且编译器能够找到它。

  3. NDK版本问题:确保你使用的NDK版本与鸿蒙Next的版本兼容。

检查并修正这些步骤后,重新编译工程应该可以解决undefined symbol的问题。

回到顶部