gpt4 book ai didi

android - 如何使用原生库

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:53 29 4
gpt4 key购买 nike

例如,我有一个名为 HelperLib 的 C++ 库.我有一些假设:

  1. 我可以把这个项目编译成*so文件。 (通过一些帮助我在 Android 上构建这个库的在线教程)。

  2. 我可以在 C/C++ 中使用这个库。通过图书馆网站上的官方教程。

  3. 我对本地库有基本的了解。例如,使用 System.loadlibrary() 加载 native 库,例如调用简单的原生 C 函数。

当我决定在线使用一些 C++ 库时,我经常遇到的那些假设。他们提供了如何使用的教程,还有一些提供了如何在 Android 上构建这个库。

但是有了所有这些,我仍然不知道如何在 Android 上使用这个库。从哪儿开始?在我可以使用这个库之前,我应该做些什么?例如。

///// this is a C++ source file to use library
int main() {
HelperLib lib = new HelperLib(); // just for example
lib.initialize();
/// demo how this library was used
lib.makeConnection();
lib.closeConnection();
return 0;
}

基于以上代码,是否可以移植到Android层,如何移植?通过调用 line-by-line 是否简单函数作为 C++ 示例?或者我们必须做“别的事情”?这让我困惑了很多次,当很多人说“Android 的教程端口库”时,却没有提供调用库函数的有用方法。

请帮助我,根据上述假设,我怎样才能继续使用这个库。有没有在线教程可以帮助我解决这个问题?

谢谢:)

最佳答案

就像@Gabe Sechan一样简单已经在评论中提到了。

1.I can compile this project into *so file. (by some tutorial online that help me build this library on Android).

您需要将 JNI 包装器添加到 native 库。例如,wrapper.cpp:

HelperLib lib;

void Java_com_example_hqt_MainActivity_initialize() {
lib = new HelperLib();
lib.initialize();
}

void Java_com_example_hqt_MainActivity_makeConnection() {
lib.makeConnection();
}

然后

3.I have a basic knowledge about native library. For example, loading a native library using System.loadlibrary(), calling simple native C function for example.

也就是说,在 MainActivity.java 中:

static {
Log.d(TAG, "loadLibrary");
System.loadLibrary("mynativelibrary");
}

public static native void initialize();
public static native void makeConnection();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Init native library
initialize();
}

public void makeNativeConnection() {
makeConnection();
}

希望这有帮助:)

关于android - 如何使用原生库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24400381/

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