【问题标题】:Android Studio Error Message: Use Of Undeclared Identifier 'accept4'Android Studio 错误消息:使用未声明的标识符“accept4”
【发布时间】:2022-01-10 04:20:33
【问题描述】:

jni 文件夹不会出现在 android studio 中,并且仅在构建后 java 文件夹获取构建

如您所见,jni 文件夹 出现在 explorer 中,但未出现在 android studio 中。

编辑: 所以在我将它添加到我的 build.gradle 之后

externalNativeBuild {
    ndkBuild {

        path 'src/main/jni/Android.mk'

    }
}

jni 文件夹显示为 cpp 文件夹名称 但是当我编译时,我从 SocketServer.cpp 得到 这个错误:

使用未声明的标识符“accept4”

这是代码:

bool SocketServer::Accept() {
    if ((acceptfd = accept4(listenfd, nullptr, nullptr, SOCK_CLOEXEC)) < 0) {
        Close();
        return false;
    }
    return true;
}

并且headers已经是includes

#include <sys/types.h>
#include <sys/socket.h>

【问题讨论】:

  • “添加 C/C++ 自然”选项是否可用?
  • “这是我要在github上编译的源代码”。问题应该是独立的。将相关代码放在问题本身中。 “使用未声明的标识符‘accept4’”。听起来您可能正在构建一个非常旧的 Android 版本。
  • 迈克尔 minSdkVersion 14 , targetSdkVersion 29 , compileSdkVersion 29
  • sdk 版本 14 是 Android 4.0,此时已经有十年了。
  • @Botje 我已经更改为 sdk 29 但错误仍然存​​在“使用未声明的标识符 'accept4'”是 ndk 版本的错误,或者是因为 android studio 找不到该功能。

标签: android c++ gradle java-native-interface .so


【解决方案1】:

我得到通过错误use of undeclared identifier 'accept4'”通过设置这些:

from compileSdkVersion 29       to compileSdkVersion 30
from buildToolsVersion "29.0.3" to buildToolsVersion "30.0.3"
from minSdkVersion 21           to minSdkVersion 22
from targetSdkVersion 29        to targetSdkVersion 30

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2014-08-04
    相关资源
    最近更新 更多