【发布时间】:2018-07-31 12:57:44
【问题描述】:
我不熟悉 Android NDK,我需要帮助才能使用 C++ 编写的本机部分代码构建 Kotlin 应用程序。我找到了使用基本 C 函数的 HelloWorld 示例,但没有使用 C++ 对象的示例或教程。
假设我有一个 C++ 对象,带有 hpp 和 cpp 文件:
object.hpp
#ifdef object_hpp
#define object_hpp
//
// include part
//
class Object {
// some stuff
}
#endif
object.cpp
#include "object.hpp"
Object::Object()
{
//constructor
}
std::string Object::sayHello(std::string value)
{
// do stuff
}
我想知道在 Kotlin 应用程序中使用它的最佳方式是什么:
- 我必须先生成一个库(.so 还是 .a ?)并将其导入我的应用程序?如果是这样,C++ 代码中是否有任何更改?
- 我可以将这些 C++ 文件导入到我的项目中吗(我知道支持 C++)?如果是,我该如何使用它?
我已经阅读了JNIEXPORT 和Java_my_package_name_SomeClass_someMethod(),但我不确定如何使用它:我需要修改 C++ 代码本身还是应该为其开发一个包装器?
非常感谢您的帮助。
【问题讨论】:
-
JNI 是一个 C 接口。您将需要开发一个包装器来调用/使用 C++。完整的文档、示例等在这里:developer.android.com/ndk
-
我读过这个,但是样本不是很清楚;)这是否意味着我的包装器必须包含带有
Java_my_package_name_SomeClass_someMethod()定义的JNIEXPORT宏?我刚刚使用 C++ 对象找到了this sample。我试试看
标签: android c++ kotlin android-ndk