首页 > 解决方案 > Android NDK - 符号 __sfp 和 __sflag 与 64 位不兼容

问题描述

应用程序支持 32 位。从 32 位 (armeabi-v7a) 迁移到 64 位 (arm64-v8a) 时面临问题。

Issue - assertion "orig___sfp" failed

在项目中,使用两个符号 __sfp 和 __sflag。这些在 32 位上运行良好。这些符号用于一种功能。

int flags, oflags;

if ((flags = orig___sflags(mode, &oflags)) == 0)
    return (NULL);

my_FILE *fp;
    if ((fp = (my_FILE *)orig___sfp()) == NULL)
        return (NULL);

这些符号是隐藏的,可以在下面的链接中找到。 https://android.googlesource.com/platform/bionic/+/50a7621b3fc493ffbb72aa23e29a4f1727dc1f51/libc/stdio/local.h https://android.googlesource.com/platform/bionic/+/a818445%5E%21/

谁能知道,在这些地方替换了哪些符号?哪些兼容64位?

标签: c++candroid-ndkndk-buildbionic

解决方案


推荐阅读