いくつかの数学を必要とする 3D ゲーム エンジンに取り組んでいますが、数学をライブラリに入れることでコードをより適切に調整したいと考えています。現在、エンジンが必要とするすべての構造とデータ型を含む「DataTypes.hpp」というヘッダー ファイルを使用しています。これには、数学ファイル「VMMath.hpp」(これはラッパーとして機能します) も含まれます。ここには、ベクトル、行列、およびクォータニオン クラス用の他の 4 つのヘッダー ファイルが含まれます。
私のアプローチは、DataTypes をプリコンパイル済みヘッダーにし、VMMath コードをライブラリ (静的または dll、正直どちらかわかりません) にすることです。そのため、すべての VMMath ソースに DataType ヘッダーを配置し、プロジェクトに関連するソース ファイルを減らす必要はありません。
私が見たものから、ライブラリは1つのヘッダーとソースである必要があり、externまたはstaticキーワードを使用して、ヘッダーがソースのメソッドを使用できるようにします。MSDN の例は、静的メソッドを持つコンストラクター/デストラクターを持たない名前空間のクラスを示しています。しかし、その能力を実際に示すには少し短いと思います。
したがって、この種のファイル構造からライブラリを作成することは可能ですか:
<-プロジェクト ディレクトリ->
(他のソース/フォルダー)
VMマス
-- VMMath.hpp
算数
-- CVector2.hpp
-- CVector2.cpp
-- CPoint2.hpp
-- CVector3.hpp
-- CVector3.cpp
-- CPoint3.hpp
-- CVector4.hpp
-- CVector4.cpp
-- CMatrix3.hpp
-- CMatrix3.cpp
-- CMatrix4.hpp
-- CMatrix4.cpp
-- CQuaternion.hpp
-- CQuaternion.cpp
それが理にかなっていることを願っています。したがって、これが機能していることを確認できる1つの方法は、VMMath.hppにすべてのクラスが含まれ、VMMath.cppにすべてのクラスソースが含まれていることですが、これはあまり保守的ではありません。または、各クラスを個別のdllとして作成する必要がありますか?
これは私が読んだcodeprojectの記事ですが、複数のファイルを持つdllが表示されません: http://www.codeproject.com/Articles/6351/Regular-DLL-Tutor-For-Beginners
読みすぎた場合はお詫び申し上げます。