c++ - 使用安卓 NDK 和 C++

标签 c++ android android-ndk

我让示例 HelloJni 项目正常运行,它使用 C 文件作为 native 代码。我无法获得任何使用 C++ 的简单示例。采用以下 JNI 代码:

#include <jni.h>
#include <string.h>

JNIEXPORT void JNICALL Java_com_test_testActivity_doSomething(JNIEnv * env, jobject obj)
{

}

如果我在 .c 文件中有代码,它可以正常工作。如果我将扩展名更改为 .cpp,它可以正常编译,但在运行时会崩溃(强制关闭)。由于库和方法签名是相同的,所以我不怀疑问题出在 Java 端。

最佳答案

您可能需要用 extern "C" block 包围您的代码:

extern "C" {

    JNIEXPORT ...

}

通过将 extern block 包装在 #if 中,您应该能够制作一个适用于 C 和 C++ 的版本:

#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT ...

#ifdef __cplusplus
}
#endif

关于c++ - 使用安卓 NDK 和 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5292190/

相关文章:

c++ - 为什么我的 MFC 应用程序不能完全退出?

c++ - 上证所该向上舍入时向下舍入

java - 努力让我的 ListView 正常工作

Android、ADB命令行工具获取ORientation

android - 在 Android 中链接使用 CMake 编译的 C 库时出现问题。

android - 如何在 android 中使用 super SDK 将文件写入外部存储?

c++ - 作为守护进程运行提升线程

c++ - 构建 OpenCV 时出错 : "recompile with -fPIC"

java.lang.IllegalArgumentException : Object would be serialized to `null` : Android 异常

java - ImageButton + 对话框问题