【问题标题】:Convert uint16 to jint and back JNI将 uint16 转换为 jint 并返回 JNI
【发布时间】:2014-03-30 23:02:46
【问题描述】:

每个人。我正在使用 JNI 在 Android 下编写。 我需要将“间隔”作为 uint16 传递到我的 C foo() 中,但之后我使用相同的“间隔”来返回 Java。

C:

 static jint func (JNIEnv* env, jobject object,jstring first)
        {
        /*...action...*/
        uint16  interval;
        jint result = foo (ifirst, &interval);
        return result < 0 ? result : interval;
        }

下面有错误

错误:操作数到 ?: 有不同的类型 'jint {aka int}' 和 'uint16* {aka short unsigned int*}'

如何使用 'interval' 参数来避免错误并继续正确的程序工作?

【问题讨论】:

  • 这是您实际拥有的代码吗?错误消息不匹配:它表示操作数是一个 int 和一个指向 uint16指针
  • 你在写,收到错误后,我删除了指针并忘记了它。对不起。

标签: c java-native-interface uint16


【解决方案1】:

根据代码,需要添加强制转换,保证?:操作符的两个条件是同一类型。

 static jint func (JNIEnv* env, jobject object,jstring first)
 {
    /*...action...*/
    uint16  interval;
    jint result = foo (ifirst, &interval);
    return result < 0 ? result : (jint)interval;
 }

【讨论】:

  • 感谢回复,但是这个错误突然消失了。
猜你喜欢
  • 1970-01-01
  • 2017-09-18
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多