安卓Java应用程序,仅支持C++头库

Android Java app with C++ header-only library?

本文关键字:支持 C++ 头库 Java 应用程序 安卓      更新时间:2023-10-16

我有一个只有头的C++库,我想开发一个使用这个库的Android Java应用程序(最好使用Android Studio),并将整个程序部署到手机上。现在,我已经假设拥有一个只有头的C++库会让事情变得更容易,但事实上恰恰相反,而且似乎不可能使用Java中的只有头的C++库。我需要"编译"C++库(这在只有头的库中是不可能的),然后做所有的JNI工作,就像在有原生C++.a/.so库时一样。但我想我一定忽略了一些东西——在安卓Java应用程序中不可能使用仅限头部的C++库吗?

(我知道其他解决方案,例如使用Qt开发Android C++应用程序,但我更喜欢用Java开发该应用程序,以节省所有Qt的麻烦,可靠地访问设备的摄像头,并拥有平台原生GUI。)

冒着指出显而易见的风险,创建一个名为"library.cpp"的文件,其中包含以下行:

#include "library.h"

编译"library.cpp".

更有可能的是,这个只有头的库中充满了模板代码。模板需要实例化才能生成对象代码。在"library.cpp"文件中,显式实例化要在Java中链接到的模板类。

现在,如果你认为你可以在C++中包含一个模板类,并将其实例化为Java中的泛型,那么你还有很多工作要做,如果可能的话(通常可能不会)。