如何使用本机库

q

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

  1. 我可以将此项目编译为* so文件。(通过一些在线教程,可以帮助我在Android上构建该库)。

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

  3. 我对本机库有基本的了解。例如,使用加载本地库System.loadlibrary(),例如,调用简单的本地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.我可以将此项目编译为* so文件。(通过一些在线教程,可以帮助我在Android上构建该库)。

您将需要将JNI包装器添加到本机库。例如对于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.我对本机图书馆有基本的了解。例如,使用System.loadlibrary()加载本机库,例如调用简单的本机C函数。

那就是在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();
}

希望这可以帮助 :)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用本机库

来自分类Dev

如何使用Ivy发布本机库?

来自分类Dev

如何使用init / exit语义包装本机库

来自分类Dev

如何设置Android Studio以使用本机库?

来自分类Dev

如何在rubymotion中包含本机库

来自分类Dev

使用本机库的phonegap android插件

来自分类Dev

在命令行中使用本机库

来自分类Dev

Dalvik是否在Android中使用本机库?

来自分类Dev

如何在64位Android设备上使用32位本机库

来自分类Dev

如何在OSX的Java 7中使用32位本机库

来自分类Dev

如何从应用程序项目外部使用NDK构建系统编译本机库?

来自分类Dev

如何在OSX的Java 7中使用32位本机库

来自分类Dev

如何使用带有本机库的 android 库作为 Chromium 的依赖项?

来自分类Dev

如何为特定的本机库允许特定的ABI?

来自分类Dev

从Java和Python调用本机库时如何释放内存?

来自分类Dev

如何复制NuGet软件包的本机库文件?

来自分类Dev

如何在JRuby中指定本机库路径?

来自分类Dev

如何从Android中的本机库函数获取日志输出

来自分类Dev

如何在Android Studio中链接本机库?

来自分类Dev

如何从现有的本机库制作Python Wheel?

来自分类Dev

如何在Android Studio中链接本机库?

来自分类Dev

如何从现有的本机库制作Python Wheel?

来自分类Dev

如何复制NuGet软件包的本机库文件?

来自分类Dev

如何在导出到 jar 时包含 opencv 本机库

来自分类Dev

本机扩展-C ++本机库

来自分类Dev

在Python中从Apk使用和导入.SO本机库

来自分类Dev

在我的手机上找不到apk使用的本机库

来自分类Dev

从.net UWP应用使用本机库时诊断DllNotFoundException

来自分类Dev

动态调用本机库

Related 相关文章

热门标签

归档