![](/img/trans.png)
[英]How to pass a complex structure between C and Java with JNI on Android NDK
[英]Shared static var access between Java and NDK (JNI) in Android
我出於數學原因在我的應用程序中使用了許多靜態常量(這些參數只能由開發人員調整,而不能由用戶調整)。
在NDK方面,我有一個頭文件(.h),其中包含所有這些常量的值。 類似地,在Java方面,我有一個跟蹤相同變量(已復制)的類。
是否有一個地方(一個文件)可以存儲這些常量以供Java和C ++使用? 也許有點像XML文件,所以開發人員只需要調整那里的常量?
如果是這樣,我應該如何正確實現它(獲取)。
請格外小心使用以下變通辦法,但這可能會節省一些開發人員的精力。
從一個簡單的Java類開始:
package com.example.hellojni;
public class Settings {
public final static int ANSWER = 42;
}
這是UseSettings.h :
#pragma once
#define package struct { struct { bool hellojni; } example; } com = {{true}}; static bool com_example_hellojni_Settings =
#define public
#define final const
#define class struct
#include "../java/com/example/hellojni/Settings.java"
;
#undef class
#undef final
#undef public
#undef package
現在您可以在C ++文件中編寫類似
#include "UseSettings.h"
int answer = Settings::ANSWER;
可能已經對該解決方案進行了調整,使其可以與C99一起使用,但是我並未為此付出足夠的努力。
類似的方法可以應用於簡單的枚舉 :
package com.example.hellojni;
public enum Test {
test1,
test2,
test3
}
#define public
#define package static struct { struct { bool hellojni; } example;} com {true}; static bool com_example_hellojni_Test =
#include "…/Test.java"
#undef public
#undef package
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.