如何在Android和iOS中使用C++创建共享库?

Z0q*_*Z0q 8 c++ android android-ndk ios libgdx

我正在使用LibGDX为Android和iOS编写应用程序,我希望能够将C++代码添加到我的应用程序中以优化某些部分并移植某些功能等.

我一直在搜索互联网,并尝试按照一些教程,但没有找到我需要的东西.

如何编写一个可以在LibGDX中加载的非常基本的C++库?我需要使用哪些工具?视觉工作室?我在Android Studio中开发.

我认为我需要Android的.so文件和iOS的.a文件,这是正确的吗?

drh*_*rhr 5

在这两个平台上,可以直接包含预编译库和C++源代码.

在Android上,你会想要研究使用Android NDK.这允许您包含可以桥接到Java的本机C/C++代码.Java和C/C++之间的连接是用JNI.来管理的.对于C++和Java之间的通信来说,这是一个相当繁琐,笨拙的系统.您将需要研究Android.mk如何设置一个makefile,指定如何将库(或源代码)包含到构建中.

在iOS上,它的链接更紧密.您可以拥有可以运行C++和Objective-C代码的Objective-C++文件.如果你使用Swift,它会有所不同(在Objective-C++和Swift之间架起桥梁).

在某些情况下,当平台(Android/iOS)提供的功能优于C++可能或现实的功能时,您可能会发现自己正在构建代码,以便C++可以根据需要访问平台.这意味着您可能拥有每个平台具有单独实现文件的标头.

  • thing.h
  • thing_android.cpp
  • thing_ios.mm

Android应用程序的Android.mk文件将包括thing_android.cpp(但不包括thing_ios.mm).每当您需要Android SDK中的内容时,此文件可以根据需要跨越JNI桥接器与Java通信.

iOS应用程序将包括thing_ios.mm(但不包括thing_android.cpp).该.mm扩展表示的Objective-C++,这样的文件可能直接调用强大的可可库需要.

最后,在所有平台上,您都希望确保将C++的使用量缩减到最低的公分母平台.换句话说,如果iOS支持C++的特定功能,而Android不支持,那么您就无法使用该特定功能.