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 中删除包含未定义标识符的行。只需注释在 Eclipse 中突出显示红色的所有行,它应该可以工作。

于 2013-10-18T14:22:56.450 回答