使用来自存档文件的函数而不使用.cpp

Using functions from an archive file without use of .cpp

本文关键字:函数 cpp 文件      更新时间:2023-10-16

我有一个存档文件,里面包含了一些内置的函数。

阅读android ndk文档后,我假设在Java类中的System.loadLibrary()上,我可以访问归档文件中的函数。

我没有访问。cpp文件,所以我只使用。a +。h(头文件)。

我还是个新手,希望能得到一些帮助。

谢谢

你有Java和Native(二进制+ .h文件)

现在需要JNI (https://en.wikipedia.org/wiki/Java_Native_Interface)

JNI将帮助您从Java中调用本机函数(在一个文件中)

这个示例使用2个库:一个是静态库,另一个是共享库。它只是一个框架,如何使用外部(第三方)库在android平台,这可能是接近你在什么。System.LoadLibrary()将加载共享库,这意味着您需要为静态库创建自己的包装器:

  • 创建java应用程序
  • 为本机函数添加java包装器函数
  • 使用java生成原生函数原型或让android studio自动生成它们(右键单击java函数,选择Generate prototype);这些函数具有一些特殊的签名,因此可以由Java代码调用(当您到达那里时将看到它)。记得在它们中添加JNIEXPORT JNICALL(如果Android Studio忘记了,可以手动添加到你的函数中)
  • 在你的存档(*)中调用你的lib函数。a,静态库)从生成的本机函数

在示例库中可以找到一些示例,但是您需要决定是使用ndk-build还是cmake来构建本机C/c++代码。