3

ここにある pocketmagic.net から Eventinjector プロジェクトを取得しようとしています。

これは、C で記述された事前コード化された jni ライブラリを使用することを意味します。私の問題は、ネイティブ コードをコンパイルしようとすると、ビルド エラーが発生することです。エラー ログは長く、すべてのエラーは同じであると思われるため、その一部のみを投稿します。

    jni/EventInjector.h:718:9: error: (near initialization for 'mt_tool_labels[0].value')
    jni/EventInjector.h:719:9: error: 'MT_TOOL_PEN' undeclared here (not in a function)
    jni/EventInjector.h:719:9: error: initializer element is not constant
    jni/EventInjector.h:719:9: error: (near initialization for 'mt_tool_labels[1].value')
    jni/EventInjector.h:720:9: error: 'MT_TOOL_MAX' undeclared here (not in a function)
    jni/EventInjector.h:720:9: error: initializer element is not constant
    jni/EventInjector.h:720:9: error: (near initialization for 'mt_tool_labels[2].value')
    jni/EventInjector.c: In function 'debug':
    jni/EventInjector.c:82:2: error: format not a string literal and no format arguments [-                        Werror=format-security]
    cc1.exe: some warnings being treated as errors

    make: *** [obj/local/armeabi/objs/EventInjector/EventInjector.o] Error 1

ブログ投稿の下のコメントを調べてみると、「Alessandro」にも同じ問題がありましたが、解決策が見つかったことがわかりました。(post 51) 「同じ問題があり、欠落しているすべての宣言を含む独自の input.h バージョンをインポートしました。」

これは、ほとんどのエラーを生成する .c ファイルの一部です。

    static struct label key_labels[] = {
    LABEL(KEY_RESERVED),
    LABEL(KEY_ESC),
    LABEL(KEY_1),
    LABEL(KEY_2),
    LABEL(KEY_3),
    LABEL(KEY_4),
    LABEL(KEY_5),
    LABEL(KEY_6),
    LABEL(KEY_7),
    LABEL(KEY_8),
    LABEL(KEY_9),
    LABEL(KEY_0),
    LABEL(KEY_MINUS),
    LABEL(KEY_EQUAL),
    LABEL(KEY_BACKSPACE),

...

私はCの経験がなく、彼が何を意味するのかわかりません。だから私の質問は次のとおりです。これを行うにはどうすればよいですか?

NDK v9 と cygwin を使用して、他の JNI ライブラリを正常にコンパイルしたので、設定と環境に問題はないはずです。

4

1 に答える 1

0

私は同じ問題を抱えていて、不足しているすべての宣言を含む独自の input.h バージョンをインポートしました。

同じことを行って、input.h を置き換えることができます (Linux カーネル ソースで未定義の識別子を使用して input.h を検索できます) が、より簡単な方法は、未定義の識別子を含む行を EventInjector.h から削除することです。日食で赤く強調表示されたすべての行をコメントするだけで、機能するはずです。

于 2013-10-18T14:22:56.450 に答える