android - Android NDK 中的 JNIEXPORT 和 JNICALL

标签 android c++ android-ndk java-native-interface

在处理一些用 C++ 编写的资源时,我发现了那些宏:

JNIEXPORT return_type JNICALL function_name(...) { 但是,Android NDK 示例不使用它们。我阅读了 Oracle 的一些文档,但我仍然感到困惑。

我在使用 Android NDK 时是否一定要使用它们?

询问的原因之一 - eclipse CDT 中突出显示的那些宏中断语法 :)

最佳答案

基本上是 windows 的问题,如果你看一下 oracle Java jdk 附带的文件 jni_md_win32.h 这是宏定义:

/*
 * @(#)jni_md.h 1.14 03/12/19
 *
 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

#ifndef _JAVASOFT_JNI_MD_H_
#define _JAVASOFT_JNI_MD_H_

#define JNIEXPORT __declspec(dllexport)
#define JNIIMPORT __declspec(dllimport)
#define JNICALL __stdcall

typedef long jint;
typedef __int64 jlong;
typedef signed char jbyte;

#endif /* !_JAVASOFT_JNI_MD_H_ */

在头文件 jni_md_linux.h 中,那些宏是空的。所以我想只要您不希望您的 native 代码在带有 oracle JVM 的 Windows 中执行,您就可以删除这些宏。

关于android - Android NDK 中的 JNIEXPORT 和 JNICALL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629495/

相关文章:

java - 有人可以向我展示 PagerSlidingTabStrip 的简单工作实现吗?

c++ - 通过按键制作开/关控制台程序

c - 将主机特定的 *.c/*.h 添加到 autotool'ed 项目

c++ - wofstream 只创建一个空文件 C++

java - 适用于 Android Studio 的 Hello-JNI

android - Eclipse CDT 中的无限重建循环

java - 找不到 com.android.tools.build :gradle:2. 3.+ 的任何匹配项

javascript - 在 cordova 应用程序上使用 AJAX 功能的最佳方法是什么?

来自 viewpager getActivity 的 Android childfragments 返回 null

c++ - 类字符串和嵌套 vector C++