使用Android NDK和C++
问题描述:
我得到了示例HelloJni项目工作,它使用C文件作为本机代码。我一直无法得到任何使用C++的简单例子。采取以下JNI代码:使用Android NDK和C++
#include <jni.h>
#include <string.h>
JNIEXPORT void JNICALL Java_com_test_testActivity_doSomething(JNIEnv * env, jobject obj)
{
}
如果我有一个.c文件中的代码,它工作正常。如果我将扩展名更改为.cpp,则编译良好,但在运行时强行关闭(强制关闭)。由于库和方法签名都是相同的,所以我不认为Java方面存在问题。
答
您可能需要与extern "C"
块包围代码:++在#if
包裹的extern块
extern "C" {
JNIEXPORT ...
}
您应该能够使一个版本将在C和C的工作:
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT ...
#ifdef __cplusplus
}
#endif
答
Java_com_test_testActivity_doSomething需要是extern“C”。
答
尝试在导出的函数定义周围放置extern“C”。
我觉得这很简单......非常感谢! – Philip 2011-03-13 20:50:58