HarmonyOS 鸿蒙Next JNI找不到头文件
HarmonyOS 鸿蒙Next JNI找不到头文件
用 Native C++ 进行开发, 在 CMakeLists.txt 中添加了包含目录,但是编译报错。请问 DevEco 哪里可以设置编译 包含目录吗?
老兄,我也是,请问你解决了吗,怎么解决的,
解决了,jni是java的,目前鸿蒙不支持了,只能用鸿蒙的make文件重新写,
包含 jni.h 的报错如何解决
具体步骤有吗?老兄。
这个报错具体怎么解决的,能分享一下吗?
target_link_libraries(entry libhilog_ndk.z.so liblua54.so)
target_link_libraries(entry libhilog_ndk.z.so lua54)
编译通过
> Task :entry:compileReleaseNativeWithCmake
Caching disabled for task ':entry:compileReleaseNativeWithCmake' because:
Build cache is disabled
Task ':entry:compileReleaseNativeWithCmake' is not up-to-date because:
Task has not declared any outputs despite executing actions.
-- The C compiler identification is Clang 10.0.1
-- The CXX compiler identification is Clang 10.0.1
-- Check for working C compiler: C:/Users/like/AppData/Local/Huawei/Sdk/native/3.0.0.0/llvm/bin/clang.exe
-- Check for working C compiler: C:/Users/like/AppData/Local/Huawei/Sdk/native/3.0.0.0/llvm/bin/clang.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Users/like/AppData/Local/Huawei/Sdk/native/3.0.0.0/llvm/bin/clang++.exe
-- Check for working CXX compiler: C:/Users/like/AppData/Local/Huawei/Sdk/native/3.0.0.0/llvm/bin/clang++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/like/DevEcoStudioProjects/MyApplication/entry/.cxx/release/arm64-v8a
[ninja] C:\Users\like\AppData\Local\Huawei\Sdk\native\3.0.0.0\build-tools\cmake\bin\ninja.exe -C C:\Users\like\DevEcoStudioProjects\MyApplication\entry\.cxx\release\arm64-v8a
ninja: Entering directory `C:\Users\like\DevEcoStudioProjects\MyApplication\entry\.cxx\release\arm64-v8a'
[1/2] Linking C shared library C:\Users\like\DevEcoStudioProjects\MyApplication\entry\build\intermediates\cmake\release\obj\arm64-v8a\liblua54.so
[2/2] Linking CXX shared library C:\Users\like\DevEcoStudioProjects\MyApplication\entry\build\intermediates\cmake\release\obj\arm64-v8a\libentry.so
FAILED: C:/Users/like/DevEcoStudioProjects/MyApplication/entry/build/intermediates/cmake/release/obj/arm64-v8a/libentry.so
cmd.exe /C "cd . && C:\Users\like\AppData\Local\Huawei\Sdk\native\3.0.0.0\llvm\bin\clang++.exe --target=aarch64-linux-ohos --gcc-toolchain=C:/Users/like/AppData/Local/Huawei/Sdk/native/3.0.0.0/llvm --sysroot=C:/Users/like/AppData/Local/Huawei/Sdk/native/3.0.0.0/sysroot -fPIC -g -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security -std=c++17 -O2 -DNDEBUG --rtlib=compiler-rt -fuse-ld=lld -Wl,--build-id=sha1 -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lunwind -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -shared -Wl,-soname,libentry.so -o C:\Users\like\DevEcoStudioProjects\MyApplication\entry\build\intermediates\cmake\release\obj\arm64-v8a\libentry.so CMakeFiles/entry.dir/hello.cpp.o -lhilog_ndk.z -llua54 -lm && cd ."
ld.lld: error: unable to find library -llua54
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
Cmake thread
org.gradle.api.GradleException: native build cmake execute failed
at jdk.internal.reflect.GeneratedConstructorAccessor499.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at com.huawei.ohos.build.utils.ProcessUtils.processWait(ProcessUtils.groovy:127)
at jdk.internal.reflect.GeneratedMethodAccessor528.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at com.huawei.ohos.build.utils.ProcessUtils.execute(ProcessUtils.groovy:90)
at com.huawei.ohos.build.utils.ProcessUtils.execute(ProcessUtils.groovy)
at com.huawei.ohos.build.utils.ProcessUtils$execute$1.callCurrent(Unknown Source)
at com.huawei.ohos.build.utils.ProcessUtils.execute(ProcessUtils.groovy:63)
at com.huawei.ohos.build.utils.ProcessUtils$execute$0.callCurrent(Unknown Source)
at com.huawei.ohos.build.utils.ProcessUtils.execute(ProcessUtils.groovy:59)
at com.huawei.ohos.build.utils.ProcessUtils$execute.call(Unknown Source)
at com.huawei.ohos.build.dsl.CmakeThread.executeCmakeBuild(CmakeThread.groovy:106)
at com.huawei.ohos.build.dsl.CmakeThread.run(CmakeThread.groovy:57)
Exception in thread "Thread-1828" org.gradle.api.GradleException: native build cmake execute failed
at jdk.internal.reflect.GeneratedConstructorAccessor499.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:72)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:277)
at com.huawei.ohos.build.utils.ProcessUtils.processWait(ProcessUtils.groovy:127)
at jdk.internal.reflect.GeneratedMethodAccessor528.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:193)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:61)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:203)
at com.huawei.ohos.build.utils.ProcessUtils.execute(ProcessUtils.groovy:90)
at com.huawei.ohos.build.utils.ProcessUtils.execute(ProcessUtils.groovy)
at com.huawei.ohos.build.utils.ProcessUtils$execute$1.callCurrent(Unknown Source)
at com.huawei.ohos.build.utils.ProcessUtils.execute(ProcessUtils.groovy:63)
at com.huawei.ohos.build.utils.ProcessUtils$execute$0.callCurrent(Unknown Source)
at com.huawei.ohos.build.utils.ProcessUtils.execute(ProcessUtils.groovy:59)
at com.huawei.ohos.build.utils.ProcessUtils$execute.call(Unknown Source)
at com.huawei.ohos.build.dsl.CmakeThread.executeCmakeBuild(CmakeThread.groovy:106)
at com.huawei.ohos.build.dsl.CmakeThread.run(CmakeThread.groovy:57)
> Task :entry:compileReleaseNativeWithCmake FAILED
:entry:compileReleaseNativeWithCmake (Thread[Execution worker for ':',5,main]) completed. Took 31.432 secs.
Execution failed for task ':entry:compileReleaseNativeWithCmake'.
> native build cmake execute failed
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --debug option to get more log output.
> Run with --scan to get full insights.
开发者您好,麻烦您这边提供详细的日志,方便定位问题,具体操作点击Run with —info这里就可以看到了
欢迎开发小伙伴们进来帮帮楼主
针对“HarmonyOS 鸿蒙Next JNI找不到头文件”的问题,以下提供直接相关的解决方案:
在HarmonyOS(鸿蒙)系统中,如果在使用JNI(Java Native Interface)时遇到找不到头文件的问题,通常是因为环境配置或路径设置不正确。以下是一些可能的解决方法:
-
检查NDK路径:确保你的项目中正确配置了HarmonyOS的NDK路径。NDK包含了JNI所需的头文件和库文件。
-
更新或重新配置CMakeLists.txt:在你的CMake配置文件中,确保包含了正确的头文件搜索路径。例如,使用
include_directories()
函数来指定头文件所在的目录。 -
检查构建配置:在构建系统中(如DevEco Studio),检查你的构建配置是否指向了正确的NDK版本和路径。
-
环境变量:确保环境变量中包含了指向NDK的路径,这样编译器在查找头文件时能够正确定位。
-
清理和重建项目:有时候,简单的清理和重建项目可以解决路径或配置更新后未生效的问题。
如果以上方法均未能解决问题,可能是由于HarmonyOS版本更新导致的兼容性问题或其他未知原因。此时,建议直接联系官方客服以获取更专业的帮助。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,