小编Aad*_*hri的帖子

哪种方法最终调用JNI_OnLoad

我试图弄清楚如何在内部调用JNI_OnLoad.我最终想出了下面的教程,但它没有说明什么代码部分实际上调用JNI_OnLoad作为内部函数调用.请帮我找到明确调用JNI_OnLoad的链接函数.我观察到System.loadLibrary调用Runtime,它再次调用Classloader.但仍无法找到原生链接.

我对OnLoad.cpp中的那个特别感兴趣(android/platform_frameworks_base/blob/master/services/jni/onload.cpp)

JNI_OnLoad

jint JNI_OnLoad(JavaVM *vm, void *reserved);

The VM calls JNI_OnLoad when the native library is loaded (for example, through 
System.loadLibrary). JNI_OnLoad must return the JNI version needed by the native library.
In order to use any of the new JNI functions, a native library must export a JNI_OnLoad function that returns JNI_VERSION_1_2. If the native library does not export a JNI_OnLoad function, the VM assumes that the library only requires JNI version JNI_VERSION_1_1. If the VM does not …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface

12
推荐指数
1
解决办法
2万
查看次数

如何将一个枚举值转换/分配给另一个枚举

我在2个具有完全相同的值集的模块中有2个枚举。如何将一个演员投射到另一个?

typedef EnumA{
a_dog = 0,
a_cat = 1
} EnumA;

typedef EnumB{
b_dog = 0,
b_cat = 1
} EnumB;

EnumA a = a_dog;
EnumB b;

b = a;
Run Code Online (Sandbox Code Playgroud)

这样的分配会导致警告:枚举类型与另一种类型混合我可以通过类型转换避免切换情况,例如:

b = (int)a;
Run Code Online (Sandbox Code Playgroud)

要么

b = (EnumB)a;
Run Code Online (Sandbox Code Playgroud)

c enums

6
推荐指数
1
解决办法
1万
查看次数

NFCEE 执行环境:硬件还是库模块?

我想知道 NFC 执行环境实际上意味着什么。在论坛文档中,它被描述为“一种环境,内置于 NFCC 中或连接到 NFCC,在其中执行 NFC 应用程序。NFCEE 可能包含在具有各种形状因素的实体中,其中一些可以是可移动或可更换的。” . 但根据我在移动环境中的理解,设备主机(一种应用微处理器,如 OMAP 或 Snapdragon)是与 NFCC 交互的主机。谁能给我一个 NFCEE 可以是什么的例子 - 我的意思是它是另一个硬件模块(如果是,哪个)或一个 android 库来执行应用程序?“外形因素”指的是什么?

nfc

3
推荐指数
1
解决办法
2792
查看次数

标签 统计

c ×1

enums ×1

java ×1

java-native-interface ×1

nfc ×1