2016-04-30 18 views
1

タイトルが混乱している場合は、ごめんなさい。とにかく、私はC++の小さなゲームエンジンで作業しています。私はそれをモジュール化したいと思います。私はそこにコアモジュールを置いておき、2Dグラフィックス、3Dグラフィックス、オーディオ、物理学などを使って他のモジュールをインストールすることができます。私のVSソリューションの別のプロジェクトでは、DLLがコンパイルされているが、コアはlibである。コアlibは、dllで定義できるENGINE_2D_GRAPHICS_MODULEのようなマクロをチェックすることで、インストールされているモジュールを確認できます。私はこれをどのようにして行い、より良い方法がありますか?私はおそらくもっと良い方法があると確信していますが、それはidkです。マクロを使用してDLLを動的にロードする方法

答えて

2

マクロはコンパイル時の定数なので、新しいモジュールのインストール時にこのようにコアモジュールに影響を与えることはできません。追加のモジュールがファイルシステムに存在するかどうかを検出し、LoadLibrary(Windowsの場合)またはdlopen(POSIX準拠のシステムの場合)を使用してロードすることをお勧めします。

別のオプションは、ゲーム開発者(つまりエンジンユーザー)にライブラリを静的にリンクさせ、必要な部分のみをコンパイルすることです。

+0

ありがとう!私はおそらくcmakeを使用して、コンパイルするパートをユーザーが選択できるようにします。答えはthxです。 – PlanetVaster

関連する問題