Android下使用C++ 的NDK範例

本文介紹了如何在Android NDK環境中使用C++編譯一個簡單的數學運算類,並實現Java層的調用。具體步驟包括:修改文件名為hello-jni.cc,添加數學運算類,修改Android.mk以適配.cpp文件,最後進行編譯生成libhello-jni.so庫。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在NDK下使用C++編譯程式
這次一樣使用NDK下的範例程式hello-jni示範

1.將hello-jni.c改名為hello-jni.cc,並且在此檔案下加入
[code]
class math
{
public:
static int add(int x,int y) {return x+y;}
};

jint
Java_com_example_hellojni_HelloJni_Add( JNIEnv* env,jobject thiz ,
jint x,jint y)
{

return math::add(x,y)
}
[/code]
2.修改Android.mk
LOCAL_PATH := $(call my-dir)
LOCAL_CPP_EXTENSION := .cc
include $(CLEAR_VARS)

LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.cc

include $(BUILD_SHARED_LIBRARY)
3.編譯
Administrator@mychat-53bb70c5 /cygdrive/d/android-ndk-1.6_r1
$ make APP=hello-jni -B
Android NDK: Building for application 'hello-jni'
SharedLibrary : libhello-jni.so
/cygdrive/d/android-ndk-1.6_r1/build/prebuilt/windows/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/.
./../../../arm-eabi/bin/ld: BFD 2.17 assertion fail /cygdrive/c/digit/Android/git/android-ndk/out/ar
m-eabi-4.2.1/toolchain/src/binutils-2.17/bfd/elf32-arm.c:2428
/cygdrive/d/android-ndk-1.6_r1/build/prebuilt/windows/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/.
./../../../arm-eabi/bin/ld: BFD 2.17 assertion fail /cygdrive/c/digit/Android/git/android-ndk/out/ar
m-eabi-4.2.1/toolchain/src/binutils-2.17/bfd/elf32-arm.c:2428
/cygdrive/d/android-ndk-1.6_r1/build/prebuilt/windows/arm-eabi-4.2.1/bin/../lib/gcc/arm-eabi/4.2.1/.
./../../../arm-eabi/bin/ld: BFD 2.17 assertion fail /cygdrive/c/digit/Android/git/android-ndk/out/ar
m-eabi-4.2.1/toolchain/src/binutils-2.17/bfd/elf32-arm.c:2428
Install : libhello-jni.so => apps/hello-jni/project/libs/armeabi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值