我正在制作一个需要一些数学的3D游戏引擎,但我希望通过将数学放入库中来更好地调制我的代码。现在我使用名为“DataTypes.hpp”的头文件,它具有我的引擎所需的所有结构和数据类型。这还包括我的数学文件,“VMMath.hpp”(这用作包装器),在这里我包括我的vector,matrix和quaternion类的其他四个头文件。
我的方法是我希望DataTypes成为预编译的头,而VMMath代码是一个库(静态或dll,老实说我不知道哪个)。那时我不必将DataType头放在所有VMMath源中,并减少项目的相关源文件。
从我所看到的,库必须是一个头和源,它使用extern或static关键字,因此头可以使用源中的方法。 MSDN上的示例显示了名称空间中的类,没有带静态方法的构造函数/析构函数。但是我发现很快就会向你展示它的能力。
因此可以从这种文件结构中创建一个库:
< -Project Dir->
(其他来源/文件夹)
VMMath
- 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
我希望这是有道理的。因此,我可以看到这种工作的一种方法是让VMMath.hpp内部包含所有类,并且VMMath.cpp包含所有类源,但这不是非常可维护的。或者我是否必须将每个班级作为一个单独的dll?
以下是我已阅读的codeproject中的一篇文章,但它没有显示包含多个文件的dll:http://www.codeproject.com/Articles/6351/Regular-DLL-Tutor-For-Beginners
我希望如果我已经产生了太多的阅读,我就会清楚地表达自己的想法。
答案 0 :(得分:1)
对任何类型的库的头文件或源文件的数量没有限制。