gpt4 book ai didi

android - 如何通过 Android NDK 编译 C++ 项目

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:37 25 4
gpt4 key购买 nike

我有一个只有一个类的小型 C++ 库项目。

class Test
{
public:
Test(){};
~Test(){};
int SomeFunc() { return 5; }
}

我可以通过 Android NDK 构建此类。 (问题 1)。我可以在 Java 应用程序中使用 .so 文件。我如何从 Java 代码调用 SomeFunc 方法(问题 2)。

最佳答案

步骤如下:

1.) 在项目的“jni”文件夹中创建 Android.mk:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := main_jni
LOCAL_CFLAGS :=
LOCAL_SRC_FILES := main.cpp
LOCAL_LDLIBS :=

include $(BUILD_SHARED_LIBRARY)

2.) 在“jni”文件夹中创建 main.cpp:

#include <jni.h>
using namespace std;

#ifdef __cplusplus
extern "C" {
#endif

class Test {
public:
Test(){};
~Test(){};
int SomeFunc() { return 5; }
};

jint Java_com_example_activity_MainActivity_SomeFunc(JNIEnv *env, jobject thiz)
{
Test *test = new Test();
return test->SomeFunc();
}

#ifdef __cplusplus
}
#endif

3.) 添加调用以在调用 Activity 中加载库(本例中为 MainActivity.java):

static {
System.loadLibrary("main_jni");
}

4.) 在调用 Activity 中定义 native 函数:

native int SomeFunc();

5.) 从 Activity 中调用它:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

TextView text = (TextView) this.findViewById(R.id.text);

text.setText(String.valueOf(SomeFunc()));
}

6.) 从项目的根文件夹运行“ndk-build”命令(注意:此步骤后在 Eclipse 中刷新项目)

7.) 重新构建并运行应用程序

关于android - 如何通过 Android NDK 编译 C++ 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13654678/

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