Nit*_*tel 3 android cmake android-ndk android-studio ndk-build
我正在Android Studio中使用 Android NDK 开发一个简单的 NDK 示例示例。运行我的应用程序工作室时,它显示以下错误。
\nBuild command failed.\nError while executing process D:\\Sdk\\cmake\\3.6.4111459\\bin\\cmake.exe with\narguments {--build D:\\Android Studio\\Workspace\\NDKSample\\app\\.externalNativeBuild\\cmake\\debug\\arm64-v8a --target native-lib}\n[1/2] Building CXX object CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.oFAILED: D:\\Sdk\\ndk-bundle\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe --target=aarch64-none-linux-android --gcc-toolchain=D:/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64 --sysroot=D:/Sdk/ndk-bundle/sysroot -Dnative_lib_EXPORTS -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64-v8a/include -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/backward -isystem D:/Sdk/ndk-bundle/sysroot/usr/include/aarch64-linux-android -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -frtti -fexceptions -O0 -fno-limit-debug-info -fPIC -MD -MT CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o -MF CMakeFiles\\native-lib.dir\\src\\main\\cpp\\native-lib.cpp.o.d -o CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o -c "D:\\Android Studio\\Workspace\\NDKSample\\app\\src\\main\\cpp\\native-lib.cpp"\nerror: error reading \'D:\\Android Studio\\Workspace\\NDKSample\\app\\src\\main\\cpp\\native-lib.cpp\'\n1 error generated.ninja: build stopped: subcommand failed.\nRun Code Online (Sandbox Code Playgroud)\n我搜索了很多,但找不到正确的答案。这就是我在这里问的原因。我还卸载了所有组件并在我的工作室实例中重新安装,但错误仍然存在。
\n另一件事:如果我将文件扩展名从 .CPP 更改为 .C,整个项目就会得到编译,甚至可以正常运行。我不知道为什么它\xe2\x80\x99s 不适用于.CPP文件。
\n我正在使用的组件。
\nAndroid Studio - 3.1.3
\n摇篮- 3.1.0
\nCMake - 3.6.4111459
\nAndroid NDK - 17.1.4828580
\nLLDB-3.1
\n#include <jni.h>\n#include <string>\n\nextern "C" JNIEXPORT jstringJNICALLJava_com_mastek_ndksample_MainActivity_stringFromJNI(\n JNIEnv *env,\n jobject /* this */) {\n\n std::string hello = "Hello from C++";\n return env->NewStringUTF(hello.c_str());\n}\nRun Code Online (Sandbox Code Playgroud)\napply plugin: \'com.android.application\'\n\nandroid {\n compileSdkVersion 27\n defaultConfig {\n applicationId "com.example.ndksample"\n minSdkVersion 15\n targetSdkVersion 27\n versionCode 1\n versionName "1.0"\n testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"\n externalNativeBuild {\n cmake {\n cppFlags "-frtti -fexceptions"\n }\n }\n }\n\n sourceSets {\n main {\n jniLibs.srcDirs = [\'src/main/jniLibs\']\n }\n }\n\n buildTypes {\n release {\n minifyEnabled false\n proguardFiles getDefaultProguardFile(\'proguard-android.txt\'), \'proguard-rules.pro\'\n }\n }\n externalNativeBuild {\n cmake {\n path "CMakeLists.txt"\n }\n }\n}\n\ndependencies {\n implementation fileTree(dir: \'libs\', include: [\'*.jar\'])\n implementation \'com.android.support:appcompat-v7:27.1.1\'\n implementation \'com.android.support.constraint:constraint-layout:1.1.2\'\n testImplementation \'junit:junit:4.12\'\n androidTestImplementation \'com.android.support.test:runner:1.0.2\'\n androidTestImplementation \'com.android.support.test.espresso:espresso-core:3.0.2\'\n}\nRun Code Online (Sandbox Code Playgroud)\n我该如何解决这个问题?
\n| 归档时间: |
|
| 查看次数: |
5128 次 |
| 最近记录: |