2011-03-13 77 views
5

我得到了示例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方面存在问题。

回答

9

您可能需要与extern "C"块包围代码:++在#if包裹的extern块

extern "C" { 

    JNIEXPORT ... 

} 

您应该能够使一个版本将在C和C的工作:

#ifdef __cplusplus 
extern "C" { 
#endif 

JNIEXPORT ... 

#ifdef __cplusplus 
} 
#endif 
+0

我觉得这很简单......非常感谢! – Philip 2011-03-13 20:50:58

1

Java_com_test_testActivity_doSomething需要是extern“C”。

1

尝试在导出的函数定义周围放置extern“C”。