gpt4 book ai didi

android - 无法使用位于不同目录中的头文件

转载 作者:太空宇宙 更新时间:2023-11-04 13:12:14 25 4
gpt4 key购买 nike

我正在尝试在 Android 中使用 Z 压缩库。到目前为止,我已经使用 NDK 设置了 Android Studio,并且示例项目运行得很顺利。一旦我将 C 文件添加到 JNI 文件夹,很少有头文件位于各个子文件夹中,Android Studio 无法包含这些头文件并显示:cannot find 'xxxxx.h'

对同一问题有以前的答案,但是很多已经过时和过时了。我正在使用 Android Studio 2.1.3,这是我的应用程序的 build.gradle 文件:

    apply plugin: 'com.android.model.application'

model {
android {
compileSdkVersion = 23
buildToolsVersion = '23.0.2'

defaultConfig {
applicationId = 'com.example.hellojni'
minSdkVersion.apiLevel = 4
targetSdkVersion.apiLevel = 23
}
/*
* native build settings: taking default for almost everything
*/
ndk {
moduleName = 'hello-jni'
toolchain = 'clang'
stl "stlport_shared"
CFlags.addAll(['-Wall'])
}
buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-rules.txt'))
}
}
productFlavors {
// for detailed abiFilter descriptions, refer to "Supported ABIs" @
// https://developer.android.com/ndk/guides/abis.html#sa
create("arm") {
ndk.abiFilters.add("armeabi")
}
create("arm7") {
ndk.abiFilters.add("armeabi-v7a")
}
create("arm8") {
ndk.abiFilters.add("arm64-v8a")
}
create("x86") {
ndk.abiFilters.add("x86")
}
create("x86-64") {
ndk.abiFilters.add("x86_64")
}
create("mips") {
ndk.abiFilters.add("mips")
}
create("mips-64") {
ndk.abiFilters.add("mips64")
}
// To include all cpu architectures, leaves abiFilters empty
create("all")
}
}
}

我试过了:

  • 包括cFlags += "-I"+ file("src/main/jni/").absolutePath
  • 在 gradle 中添加 STL "STLport_shared"

基于其他答案,但没有一个能解决问题。如果有人以前解决过同样的错误,请帮助我。

最佳答案

假设我有一个名为 Project 的文件夹,它包含两个文件夹,它们的标题名称相似,分别是 foo/foo.h 和 bar/bar.h。 Foo 想要#include bar.h,但它不能在当前文件范围内这样做。它必须到 Project 后一个目录。为此,可以使用通用符号 ..:

#include "../bar/bar.h"

故事的寓意:文件夹名称在 #include 语句中是完全合理的。

关于android - 无法使用位于不同目录中的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39339994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com