针对android的问题编译…';未在此范围内声明';错误 你好家伙,又是C++编程问题。再次对我很容易,因为我刚开始学习C++。我在编译时遇到一个错误,显示:

针对android的问题编译…';未在此范围内声明';错误 你好家伙,又是C++编程问题。再次对我很容易,因为我刚开始学习C++。我在编译时遇到一个错误,显示:,android,c++,Android,C++,frameworks/native/libs/gui/surfacettextureclient.cpp:在成员函数“virtual int>android::surfacettextureclient::setUsage(uint32_t)”中: frameworks/native/libs/gui/surfacettextureclient.cpp:498:20:错误:>'GRALLOC\u USAGE\u PRIVATE\u EXTERNAL\u ONLY'未在此范围内声明 framewo

frameworks/native/libs/gui/surfacettextureclient.cpp:在成员函数“virtual int>android::surfacettextureclient::setUsage(uint32_t)”中: frameworks/native/libs/gui/surfacettextureclient.cpp:498:20:错误:>'GRALLOC\u USAGE\u PRIVATE\u EXTERNAL\u ONLY'未在此范围内声明 frameworks/native/libs/gui/surfacettextureclient.cpp:503:23:错误:>'GRALLOC\u USAGE\u PRIVATE\u EXTERNAL\u BLOCK'未在此范围内声明 frameworks/native/libs/gui/surfacettextureclient.cpp:505:30:错误:>'GRALLOC\u USAGE\u PRIVATE\u EXTERNAL\u CC'未在此范围内声明

以下是“SurfaceTextReclient.cpp”文件:

 17 #define LOG_TAG "SurfaceTextureClient"
 18 #define ATRACE_TAG ATRACE_TAG_GRAPHICS
 19 //#define LOG_NDEBUG 0
 20
 21 #include <android/native_window.h>
 22 
 23 #include <utils/Log.h>
 24 #include <utils/Trace.h>
 25
 26 #include <gui/ISurfaceComposer.h>
 27 #include <gui/SurfaceComposerClient.h>
 28 #include <gui/SurfaceTexture.h>
 29 #include <gui/SurfaceTextureClient.h>
 30
 31 #include <private/gui/ComposerService.h>
 32 #ifdef QCOMHW
 33 #include <gralloc_priv.h>
 34 #endif
 35 
 36 namespace android {
 37 
 38 SurfaceTextureClient::SurfaceTextureClient(
 39         const sp<ISurfaceTexture>& surfaceTexture)
 40 {
 41     SurfaceTextureClient::init();
 42     SurfaceTextureClient::setISurfaceTexture(surfaceTexture);
 43 }
 44 
 45 // see SurfaceTextureClient.h
 46 SurfaceTextureClient::SurfaceTextureClient(const
 47          sp<SurfaceTexture>& surfaceTexture)
 48 {
 49     SurfaceTextureClient::init();
 50     SurfaceTextureClient::setISurfaceTexture(surfaceTexture->getBufferQueue());
 51 }
 52
 53 SurfaceTextureClient::SurfaceTextureClient() {
 54     SurfaceTextureClient::init();
 55 }
 56 
 57 SurfaceTextureClient::~SurfaceTextureClient() { 
 58     if (mConnectedToCpu) {
 59         SurfaceTextureClient::disconnect(NATIVE_WINDOW_API_CPU);
 60
 61 }

494 int SurfaceTextureClient::setUsage(uint32_t reqUsage)
493 {
494     ALOGV("SurfaceTextureClient::setUsage");
495     Mutex::Autolock lock(mMutex);
496 
497 #ifdef QCOMHW
498     if (reqUsage & GRALLOC_USAGE_PRIVATE_EXTERNAL_ONLY) {
499         //Set explicitly, since reqUsage may have other values.
500         mReqExtUsage = GRALLOC_USAGE_PRIVATE_EXTERNAL_ONLY;
501         //This flag is never independent. Always an add-on to
502         //GRALLOC_USAGE_EXTERNAL_ONLY
503         if(reqUsage & GRALLOC_USAGE_PRIVATE_EXTERNAL_BLOCK) {
504             mReqExtUsage |= GRALLOC_USAGE_PRIVATE_EXTERNAL_BLOCK;
505         } else if(reqUsage & GRALLOC_USAGE_PRIVATE_EXTERNAL_CC) {
506             mReqExtUsage |= GRALLOC_USAGE_PRIVATE_EXTERNAL_CC;
507         }
508     }
509 #endif
17#定义日志标签“SurfaceTextReclient”
18#定义图形#标记图形#
19/#定义日志0
20
21#包括
22
23#包括
24#包括
25
26#包括
27#包括
28#包括
29#包括
30
31#包括
32#ifdef QCOMHW
33#包括
34#endif
35
36名称空间android{
37
38 SurfaceTextReclient::SurfaceTextReclient(
39施工材料和表面结构)
40 {
41 SurfaceTextReclient::init();
42 SurfaceTextReclient::setISurfaceTexture(surfaceTexture);
43 }
44
45//参见SurfaceTextureReclient.h
46 SurfaceTextReclient::SurfaceTextReclient(常数
47 sp和表面结构)
48 {
49 SurfaceTextReclient::init();
50 SurfaceTextReclient::setISurfaceTexture(surfaceTexture->getBufferQueue());
51 }
52
53 SurfaceTextReclient::SurfaceTextReclient(){
54 SurfaceTextReclient::init();
55 }
56
57 SurfaceTextReclient::~SurfaceTextReclient(){
58如果(mConnectedToCpu){
59 SurfaceTextReclient::断开连接(本机窗口API CPU);
60
61 }
494内部表面TextReclient::设置用途(uint32\u t要求用途)
493 {
494 ALOGV(“SurfaceTextReclient::setUsage”);
495互斥锁::自动锁(mMutex);
496
497#ifdef QCOMHW
498 if(仅限要求使用和一般使用、私人使用和外部使用){
499//显式设置,因为reqUsage可能有其他值。
500 mReqExtrasage=仅适用于一般用途、私人用途和外部用途;
501//此标志从不独立。始终是
502//GRALLOC\u仅用于外部
503如果(请求使用和GRALLOC\u使用\u专用\u外部\u块){
504 mreqexturasage |=GRALLOC(使用)私人(外部)区块;
505}否则如果(要求使用和一般使用\u私人\u外部\u CC){
506 mreqexturasage |=一般用途(私人)外部(CC);
507         }
508     }
509#endif

如果需要更多信息,请告诉我。修复了此编译之前的错误。不确定如何处理此错误。

我找到了问题的解决方案,我想lol。源文件夹中的另一个gralloc_priv.h文件位于不同的目录下,并复制了该头文件中未受限制成员和我的声明如果有人遇到这个问题,请告诉我,我会告诉你我在哪里找到这些文件。

哪里是
GRALLOC\u USAGE\u PRIVATE\u EXTERNAL\u
声明的?这里是到以前的文章的链接,带有GRALLOC…头文件:嗯..在那个文件中你没有
GRALLOC\u USAGE\u PRIVATE\u EXTERNAL\u
,但只有
GRALLOC\u USAGE\u EXTERNAL\u ONLY
不确定从这里做什么。我是否应该假设缺少标题?如果您找到自己的问题答案,请编辑该问题并添加答案。@RiggsFolly实际上,这是本网站不需要的。但我们希望有完整的答案,而不是“我想我已经解决了,问你是否需要详细信息”。@stefan道歉,查看了礼仪。我认为这是不允许的,你应该在你的问题中添加你自己的答案。我不会再犯这个错误了。谢谢。