例如,我有一个名为的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 ++示例是否简单?还是我们必须做“别的事情”?当很多人说“ 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] 删除。
我来说两句