更新:私は、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;
};
注:リンクしている投稿は、実行時にコンパイルを試みません。さらに、ヘッダーは、とにかくコンパイルする必要はない。 m8mbleいや@ – m8mble
あなたの権利私は、このリンクを意図:http://stackoverflow.com/questions/11016078/is-it-possible-to-create-a-function-dynamically-during-runtime-in-cをしかし、私が得ましたもう少し "研究"の後でg ++に。 –
あなたはいくつかのことを誤解しているようです。まず第一に、C++はインタプリタ言語ではなくコンパイルされたものです(コンパイルされたコードは非常にプラットフォーム/ハードウェア固有です)。 –