JNIEXPORT and JNICALL in Android NDK
JNIEXPORT and JNICALL in Android NDK
在使用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头文件中,这些宏是空的。所以我猜,只要你不希望你的本地代码在windows与oracle JVM中执行,你可以删除这些宏。
检查您希望从Android NDK中获得的平台的包含路径是否已添加到项目的C c++包含中。可以这样做:
- 打开项目属性
- 扩展C/c++通用
- 点击路径和符号
- 在include部分添加NDK所需平台的include文件夹的路径(例如${ANDROID_NDK_HOME}platformsandroid-9arch-armusrinclude)
相关文章:
- Android NDK传感器向事件队列报告奇怪的间隔
- Android NDK 编译 LAME HAVE_MPGLIB > 'interface.h' 文件未找到
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 在 constexpr 构造函数 (c++17) 中赋值到 const char * 在使用 Android NDK 时
- 如何在 android ndk 上链接 C 和 C++ 代码,以及 C 和 C++ 运行时库(包括 STL)?
- Android NDK 未定义对ASensorEventQueue_registerSensor的引用
- 如何将 libjpeg-turbo Android NDK 添加为静态库
- 在 Flutter 应用程序中使用 Android NDK 中的 AssetManager 类
- Android NDK - 无法在 Visual Studio 2017 中调试
- 不再支持Android NDK APP_STL gnustl_shared
- Android NDK:用于第三方Java库的静态或共享C++运行时
- 为 Android NDK 编译库
- 从文件问题加载纹理 Android NDK 和 OpenGL
- Android NDK - C++ 异常会导致第三方原生库崩溃
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- [android ndk]如何获取资产文件夹中文件的绝对路径?
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- 如何在Android(NDK)中使用CPR库
- 使用 Android NDK 使用 clang++ 编译C++代码时对"_Unwind_Resume"的未定义引用
- 如何在 C/Android NDK 中将字符串日期转换为毫秒