0

こんにちは、別の C++ プログラミングの質問です。私はC++を学び始めたばかりなので、もう一度簡単にしてください。コンパイル時に次のようなエラーが表示されます。

Frameworks/native/libs/gui/SurfaceTextureClient.cpp: メンバー関数 'virtual int >android::SurfaceTextureClient::setUsage(uint32_t)': Frameworks/native/libs/gui/SurfaceTextureClient.cpp:498:20: エラー: > 「GRALLOC_USAGE_PRIVATE_EXTERNAL_ONLY」はこのスコープで宣言されていませんframeworks/native/libs/gui/SurfaceTextureClient.cpp:503:23: エラー: >「GRALLOC_USAGE_PRIVATE_EXTERNAL_BLOCK」はこのスコープで宣言されていませんframeworks/native/libs/gui/SurfaceTextureClient.cpp:505 :30: エラー: >'GRALLOC_USAGE_PRIVATE_EXTERNAL_CC' はこのスコープで宣言されていませんでした

「SurfaceTextureClient.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

さらに情報が必要な場合はお知らせください。このコンパイルの以前のエラーを修正しました。ここでこれをどうするかわかりません。

4

1 に答える 1

0

さて、私は私が思う問題の解決策を見つけました笑。別のディレクトリの下のソースフォルダに別のgralloc_priv.hファイルがあり、スコープ外のメンバーのヘッダーファイルの宣言をコピーして、問題なく処理されました。誰かがこの問題に遭遇した場合は、私に知らせてください。ファイルが見つかった場所を示します。

于 2012-08-14T23:42:38.097 に答える