native-lib.c如何编写
时间: 2023-06-13 09:03:18 浏览: 247
native-lib.zip
`native-lib.c` 是一个 C/C++ 的源文件,通常用于开发 Android 应用的 Native 代码。在 Android Studio 中创建一个 Native 应用时,会自动生成 `native-lib.c` 文件。
下面是一个简单的 `native-lib.c` 文件的示例代码:
```c
#include <jni.h>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_stringFromJNI(JNIEnv *env, jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
```
这个文件定义了一个名为 `Java_com_example_myapplication_MainActivity_stringFromJNI` 的函数,该函数返回一个字符串 `"Hello from C++"`。在 Java 层中可以通过调用该函数来获取这个字符串。
需要注意的是,在 `native-lib.c` 中需要包含 `<jni.h>` 文件,并且在函数定义前需要使用 `extern "C"` 来避免函数名被 C++ 编译器改变。
此外,需要在项目的 `build.gradle` 文件中添加 Native 库的配置,以便让 Android Studio 编译 `native-lib.c` 文件:
```groovy
android {
// ...
defaultConfig {
// ...
externalNativeBuild {
cmake {
cppFlags "-std=c++11" // 如果需要,可以添加额外的编译选项
}
}
}
// ...
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
```
其中,`path` 指定了 CMakeLists.txt 文件的路径。在 CMakeLists.txt 中可以定义 `native-lib.c` 的编译规则。例如:
```cmake
add_library( # Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
src/main/cpp/native-lib.c)
```
阅读全文