0

私は2つのプロジェクトを持っています.1つはサンプル(エラーなしでコンパイルされます)で、次のようになります(最初の数行のみが表示されます):

実施例

#include "cinder/app/App.h"
#include "cinder/app/RendererGl.h"
#include "cinder/Surface.h"
#include "cinder/gl/gl.h"
#include "cinder/gl/Texture.h"
#include "cinder/Rand.h"
#include "cinder/qtime/QuickTimeGl.h"

using namespace ci;
using namespace ci::app;
using namespace std;

class QTimeAdvApp : public App {
  public:
    void prepareSettings( Settings *settings );
    void setup();

    void keyDown( KeyEvent event );
    void fileDrop( FileDropEvent event );

    void update();
    void draw();

    void addActiveMovie( qtime::MovieGlRef movie );
    void loadMovieUrl( const std::string &urlString );
    void loadMovieFile( const fs::path &path );

};

特に次の行に注意してください。void addActiveMovie( qtime::MovieGlRef movie );

同じライブラリ (LibCinder 内の Quicktime OpenGL) を使用する必要があるもう 1 つのプロジェクトは、同様のことを試みています。

プロジェクトで使用

#pragma once

#include "AbstractContent.h"
#include "cinder/gl/Texture.h"
#include "cinder/Tween.h"
#include "AbstractTransition.h"
#include "cinder/qtime/QuickTimeGl.h"

namespace TH {

    class VideoContent : public AbstractContent {
    public:
        VideoContent();
        ~VideoContent();
        virtual void setup();
        void loadMovie(ci::Url url);
        void loadLocalMovie(ci::fs::path path);
        void setPreloadedMovie(ci::qtime::MovieGlRef movie);

これはコンパイラ エラーをスローします:名前空間 'cinder' に 'qtime' という名前のメンバーはありません

実際void setPreloadedMovie(ci::qtime::MovieGlRef movie);、最初の例では完全修飾名を使用でき、ci:qtime:MovieGlRef(期待どおり) 正常にコンパイルされます。

ここで何が起こっているのですか?"Use in Project" バージョンがコンパイラ エラーをスローするのはなぜですか:名前空間 'cinder' に 'qtime' という名前のメンバーがありません

わかりやすくするために、QuickTimeGl.h ファイルには、名前空間と型 def を明確に宣言する別のファイルが含まれています。

namespace cinder { namespace qtime {

typedef std::shared_ptr<class MovieGl>  MovieGlRef;

何か不足していますか?以前と同じように、正しいヘッダー ファイルをインクルードしていると確信しており、完全修飾名前空間を使用しようとしても、コンパイラは定義を見つけられませんか?

4

1 に答える 1