我让示例 HelloJni 项目正常运行,它使用 C 文件作为本机代码。我无法获得任何使用 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 块包装在#if
:
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT ...
#ifdef __cplusplus
}
#endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)