2016-10-24 2 views
-3

更新:私は、DLLとロードを使用して、それらをアンロードすることで、この作業を取得することになりました。実行時にC++ファイルを再コンパイルする方法は?

私はこれについての記事を見てきたので、私はその可能性を知っているが、私は実際にそれらを理解していません。

だから私は別のクラス(コンポーネント)でメソッドを呼び出すクラス(DetailsLayout)を持っています。実行時に、コンポーネントの内容を変更して、ユーザーがそのメソッドに作成した別のコンポーネントを追加します。私はDetailsLayout.cppとComponents.hを再コンパイルしたいのですが、これについてどうやってどうなるかについては混乱しています。

は今の私があるため、この記事でこれをしようとしている:Using G++ to compile multiple .cpp and .h files

system(("g++ -c ProjectComponents.hpp").c_str()); 
system(("g++ -c DetailsLayout.cpp").c_str()); 
DetailsLayout::CreateMenu(); 

Iは、G ++は、内部または外部コマンドとして認識されていないというエラーが表示されます。私の最終的な目標のようなものをidはすべきジェスパーの提案病気に言及あたりとして

。だから今私のゲームエンジンでは、ユーザーは、(私が作った)コンポーネントをシーン内のオブジェクトに動的に追加することができます。私はそれを "ユーザー"がコンポーネントを作って動的に追加できるようにしようとしましたが、私がそれらのために作った.hと.cppファイルをコンパイルしないとできませんでした。私は手動で私のプロジェクトにファイルを含めると動作クラスを追加するためのメソッドを実行するが、私はコンパイルするためにボタンをクリックしたときに発生したい。

Myコンポーネントはすべてこのクラスから継承します。

class Component 
{ 
public: 
    Component(); 
    ~Component(); 

    virtual bool Initialize() { return true; } 
    virtual bool Update(float dt) { dt; return true; } 
    virtual bool Draw() { return true; } 
    template <class T> T* GetSiblingComponent() 
    { 
     return m_owner->GetComponentByType<T>(); 
    } 

protected: 
    Entity* m_owner; 
    char m_name[Imgn::MAX_NAME_LEN]; 
    bool m_enabled; 
}; 
+0

注:リンクしている投稿は、実行時にコンパイルを試みません。さらに、ヘッダーは、とにかくコンパイルする必要はない。 m8mbleいや@ – m8mble

+0

あなたの権利私は、このリンクを意図:http://stackoverflow.com/questions/11016078/is-it-possible-to-create-a-function-dynamically-during-runtime-in-cをしかし、私が得ましたもう少し "研究"の後でg ++に。 –

+1

あなたはいくつかのことを誤解しているようです。まず第一に、C++はインタプリタ言語ではなくコンパイルされたものです(コンパイルされたコードは非常にプラットフォーム/ハードウェア固有です)。 –

答えて

0

Iは、G ++は、内部または外部コマンドとして認識されていないというエラーが表示されます。

GCCがターゲットマシンにインストールされているとは限りません。任意のホストマシンでコードをコンパイルして実行するかどうかを最初に確認する必要があります。

また、あなたは、リンク段階を欠場するようだ、と同様に生成される実行可能ファイルを呼び出します。

+0

Ahh so illダウンロードGCC私は気づいていません。実行可能ファイルのリンクと実行に関しては、プログラムが実行されているので、.cppファイルがプログラム内で更新されることを期待していました。コンパイルボタンをクリックしたときのUE4のホットリロードの仕方を並べ替えます。 –

+0

@AndrewVGaming _hot replacement_では、[eiffel](http://wiki.c2.com/?EiffelLanguage)のような言語をよく見てください。 –

+0

私はluaやeiffelのような言語を使う方が簡単だと認識していますが、私のゲームエンジンでC++を使ってコンポーネントを追加できるようにしたいと考えています。これは大学のための研究プロジェクトなので、私はそれを働かせるために余分に働いても構いません。もしUnrealがそうすることができるなら、私はそうすることができます:) –

関連する問題