gpt4 book ai didi

Android JNI pthread_create "too many arguments, expected 1"

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:13 24 4
gpt4 key购买 nike

每次我用过pthread_create在我的生活中,它需要四个参数。出于某种原因,在使用 android 和 JNI 时尝试在 C 中创建线程时,我看到了这个:

enter image description here

发生了什么

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);

为什么我没有看到它?

编辑:

更奇怪的是,我对面点击了我的 #include <pthread.h>然后点击Go to->Declaration ,然后向下滚动直到我看到 pthread_create并且它显示了正确的函数定义。

编辑 2:

更奇怪的是,我现在意识到它编译得很好。这是编辑器的事情。如果我输入四个参数,它会在编辑器中显示“Expected 1 argument”,但编译时没有任何问题。但是,如果我像编辑器想要的那样只提供 1 个参数,它就无法编译,并在错误日志中显示“Expected 4 arguments”。

我不知道这是怎么回事。

最佳答案

看起来 Android Studio 对现在在 NDK r15 中使用的 _Nonnull 非常不满意。你可以选择GCC编译器

android { defaultConfig { externalNativeBuild { ndkBuild { 
arguments "NDK_TOOLCHAIN_VERSION=4.9"
}}}}

或者您可以禁用新的 Unified Headers :

android { defaultConfig { externalNativeBuild { ndkBuild { 
arguments "APP_DEPRECATED_HEADERS=true"
}}}}

或者你可以切换到NDK r14或更早。

我打开了一个issue适用于 Android Studio/C++ 开发人员。

关于Android JNI pthread_create "too many arguments, expected 1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44463834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com