Java 如何使用NDK和C++;文件夹

Java 如何使用NDK和C++;文件夹,java,android,c++,android-ndk,Java,Android,C++,Android Ndk,我是JNI和NDK代码中的NOOB,我必须创建一个方法来使用一个静态库,其中有许多方法和头在C++中创建。我必须从java调用它们。我会尽量解释我的问题,我想解决这个问题,因为很多天 我将尝试用一些代码来解释这一点 我在cpp中有此方法搜索: #include <iostream> #include <HDTManager.hpp> using namespace std; using namespace hdt; int main(int argc, char *

我是JNI和NDK代码中的NOOB,我必须创建一个方法来使用一个静态库,其中有许多方法和头在C++中创建。我必须从java调用它们。我会尽量解释我的问题,我想解决这个问题,因为很多天

我将尝试用一些代码来解释这一点

我在cpp中有此方法搜索:

#include <iostream> 
#include <HDTManager.hpp>

using namespace std;
using namespace hdt;

int main(int argc, char *argv[]) {
// Load HDT file
    HDT *hdt = HDTManager::mapHDT("/storage/emulated/0/Download/linkedmdb.hdt");

// Enumerate all triples matching a pattern ("" means any)

IteratorTripleString *it = hdt->search("","","Batman");
    while(it->hasNext()){
            TripleString *triple = it->next();
            cout << "Result: " << triple->getSubject() << ", " << triple>getPredicate() << ", " << triple->getObject() << endl;
    }
    delete it;
    delete hdt;
}

NDK附带了几个示例项目。如果您不确定如何将本机代码集成到您的应用程序中,请先看看这些。嗨,Michael,谢谢您的评论。我尝试了很多例子,做了很多教程,但没有人告诉我如何做这样的事情,我非常需要这个,因为它解决了我项目中非常重要的一部分。首先,你将无法使用一个预先构建的库,它不是用NDK工具链构建的。一旦您了解了这一点,NDK示例将向您展示如何编写与JNI兼容的代码和相应的Java代码——使用这些知识编写JNI粘合代码,然后调用现有的本机代码。但是,请注意,Android应用程序进程通常会超过给定活动或服务实例的生命周期——您可能需要认真考虑在同一进程中再次调用此代码时会发生什么。
HDT *hdt = HDTManager::mapHDT("/storage/emulated/0/Download/linkedmdb.hdt");