使用VS2005编译freetype的动态链接库
使用VS2005编译freetype的动态链接库 请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com
使用freetype是2.3.8版本,freetype2.3.8包解压缩后,在**.\builds\win32\visualc**目录下有基于vs2005的sln文件,不过这个解决方案文件,只是包含有生成静态链接的工程设置,要编译动态链接库,还需要手动去处理一下。步骤如下:
参考./doc目录下的INSTALL.ANY文档。该文档其实已经把标准编译所要包含的文件及它们的作用说得很清楚了,现在使用VC2005建立一个空的win32DLL工程,然后按照INSTALL.ANY的说明把需要加入的文件加入工程内,INSTALL.ANY文件内有一很明显的提醒:“DO NOT COMPILE ALL C FILES!”,就是不要编译所有的C文件,这点应该注意。 要进行修改的文件是ftoption.h,该文件在**/include/freetype/config**目录下,该目录主要存放一些配置头文件。ftoption.h文件里对每一可定制项目都有很详细的解释,为了可以编译成DLL,要进行的修改是: 首先备份一下ftoption.h,如,另存为ftoption_bak.h文件。
根据ftoption.h在 “DLL export compilation” 项里的描述,FreeType2库在需要导出的函数前都使用了FT_EXPORT(用在函数定义处),FT_EXPORT_DEF(用在函数声明处)两个宏,需要重新定义这两个宏。FreeType2库对于FT_EXPORT和FT_EXPORT_DEF宏的缺省定义在ftconfig.h文件中。所以在ftopion.h的该处重新定义自己的FT_EXPORT和FT_EXPORT_DEF就可以了,重新定义如下所示:
#ifdef FT2_DLL //因为在静态库与动态中都使用该文件,所以区别使用该指示字,使用FT2_DLL表示要编译为DLL动态库。 #ifdef FT2_EXPORTS //按照微软的标准做法,定义__declspec(dllexport)与__declspec(dllimport) #define FT_EXPORT( x ) __declspec(dllexport) x #define FT_EXPORT_DEF( x ) x #else //按照微软的说法,其它__declspec(dllimport)也可以不要的,但这样做,更有效率并且如果不这么做的话有时会出现问题 #define FT_EXPORT( x ) __declspec(dllimport) x #define FT_EXPORT_DEF( x ) x #endif #endif