java - 为什么通过 JNI 在 Java 和 C++ 之间传递不正确的值?

标签 java android c++ android-ndk java-native-interface

我想使用 JNI 将 double 值从 C++ 传递到 Java (Android)。

相关C++代码:

JNIEXPORT jdouble JNICALL
Java_test_MPEG_DASH_ffmpeg_PlayerUI_Notif(JNIEnv* env, jobject obj,jint st){

    jdouble p=receiver->buffer->Notify();
    LOGI("Notifyyyyyyyyy from jni is %d ",p);
    return p;
}

显示 35、36 等

Java调用native方法访问时,返回错误值:0.0000133333

相关Java代码:

double buf=Notify();
Log.d(TAG, "Bufffffffffffffffffffffffffer :"+buf" ms");

为什么值不一致?

最佳答案

“%d”不是与浮点类型兼容的格式说明符。如果您使用它,您将强制错误解释包含 jdouble 的位,并打印不正确的值。

很可能返回给 Java 的值是正确的(那里有相当多的类型强制),并且记录的值不正确。

关于java - 为什么通过 JNI 在 Java 和 C++ 之间传递不正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16462742/

相关文章:

java - 使用 spring boot 在后台运行进程

android - 隐藏 Android SDK sdkmanager cli 命令的进度条

java - 如何为一个类实例化更多的CDI bean?

java - 使用 Android 从 Facebook 获取多个源

android - 常见文件浏览器的 Intent 过滤器

android - 如何检查 ListView 项是否被选中

c++ - 如何在 QT 或 Windows API 中连接到无线 WIFI 网络?

c++ - 为什么当我将指针分配给 NULL 时我的程序不会崩溃?

c++ - 如何在长表达式中提升操作数?

java - 如何对 Azure Web 应用程序使用 XSRF 保护