2009年3月23日星期一

编译SGE库

SGE是一个非常实用也挺不错的SDL图型外部库,在我的项目中我使用它进行一些简单的2D做图,并且使用它的Sprite classes。接下来简单地介绍如何编译它。

在WIN32环境下,使用MinGW+MSYS, 首先编译SDL,网上有很多帮助,然后见编译完成的SDL的静态库放入C:\MinGW\lib,将头文件放入C:\MinGW\include\SDL。

然后使用MSYS进入SGE目录,输入make就可以进行编译。如果输入make install,会Builds 一个 dynamic SGE library 并且 将SGE的 headers 放入例如C:\MinGW\include\SDL里。make 的时候可能会有错误,可以根据错误提示进行改正,例如:可能会遇到sge_surface.cpp:148: error: invalid initialization of non-const reference of type 'char*&' from a temporary of type 'char**'这样的错误,只需在sge_surface.cpp:148将va_start((va_list*)ap, format); 改成va_start((va_list&)ap, format); 即可。

 

如果以上方法有问题,或者无法编译dll库。那么可以试试以下方法 (点击下图,可看大图):

SGE_Build_Eclipse1.使用Eclipse, 然后新建一个C++项目,将SGE的源文件加入其中,如图A所示。

并新建一个sge.cpp文件,输入#include "sge.h"   int main(int argc, char** argv) {  return 0;    }

2.在setting里进行一些编译所需的简单设定如图B, C, D所示。

3.现在还没完成,如果没有SDL_image话,那么需要对sge_config.h手动进行设定,如图E所示,加入画红线的语句,去掉其上面的语句。

4.现在编译会又会遇到,sge_surface.cpp:148: error: invalid initialization of non-const reference of type 'char*&' from a temporary of type 'char**'这样的错误,同样的,如图F 所示将va_start((va_list*)ap, format); 改成va_start((va_list&)ap, format); 即可。同一类型的错误,都可以这样改正。

好了,大功告成,现在在/yourproject/Debug里你会找到SGE.DLL。