例如,我有一个 C++ 库,名为HelperLib
。我有一些假设:
我可以将这个项目编译成 *so 文件。 (通过一些在线教程帮助我在 Android 上构建这个库)。
我可以在 C/C++ 中使用这个库。通过图书馆网站上的官方教程。
我对本机库有基本的了解。例如,使用加载本机库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++ 示例?或者我们必须做“别的事情”?这让我很多次感到困惑,很多人说“tutorial port library to Android”,但没有提供调用库函数的有用方法。
请帮助我,根据上述假设,我如何继续使用这个库。有在线教程可以帮助我解决这个问题吗?
谢谢 :)
就这么简单@加布·塞尚 https://stackoverflow.com/users/1631193/评论里已经提到了。
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();
}
And then
3.我对native库有基本的了解。例如,使用 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();
}
希望这可以帮助 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)