GameAcademe

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  0 Posts :: 14 Stories :: 5 Comments :: 0 Trackbacks

常用链接

留言簿(5)

我参与的团队

搜索

  •  

最新评论

使用VS2005编译freetype的动态链接库

使用freetype是2.3.8版本,freetype2.3.8包解压缩后,在.\builds\win32\visualc目录下有基于vs2005的sln文件,不过
这个解决方案文件,只是包含有生成静态链接的工程设置,要编译动态链接库,还需要手动去处理一下。步骤如下:

1:
参考./doc目录下的INSTALL.ANY文档。该文档其实已经把标准编译所要包含的文件及它们的作用说得很清楚了,现在使用VC2005建立一个空的win32DLL工程,然后按照INSTALL.ANY的说明把需要加入的文件加入工程内,INSTALL.ANY文件内有一很明显的提醒:“DO NOT COMPILE ALL C FILES!”,就是不要编译所有的C文件,这点应该注意。

2:

要进行修改的文件是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就可以了,重新定义如下所示:

 

 1
 2#ifdef FT2_DLL    //因为在静态库与动态中都使用该文件,所以区别使用该指示字,使用FT2_DLL表示要编译为DLL动态库。
 3 #ifdef FT2_EXPORTS  //按照微软的标准做法,定义__declspec(dllexport)与__declspec(dllimport)
 4  #define FT_EXPORT( x )  __declspec(dllexport) x
 5  #define FT_EXPORT_DEF( x )  x
 6 #else     //按照微软的说法,其它__declspec(dllimport)也可以不要的,但这样做更有效率并且如果不这么做时,在导出变量时有时会出现问题
 7  #define FT_EXPORT( x )  __declspec(dllimport) x
 8  #define FT_EXPORT_DEF( x ) x
 9 #endif
10#endif
11
12


3:编译,便能编译出一个基于多线程C运行库的freetype DLL

 

posted on 2009-07-06 19:34 游戏研究院 阅读(2607) 评论(2)  编辑 收藏 引用

Feedback

# re: 使用VS2005编译freetype的动态链接库 2010-10-14 19:37 ddr
你好, 按照你的方法试了一下,出现以下错误
1>e:\workfile\program\freetype-2.4.3\src\psnames\pspic.c(21) : error C2006: '#include' : expected a filename, found 'identifier'
1>e:\workfile\program\freetype-2.4.3\src\psnames\pspic.c(21) : fatal error C1083: Cannot open include file: '': No such file or directory

======================
问题出在freetype中定义的宏,不知道为什么VC2008不认
#include FT_INTERNAL_OBJECTS_H
#define FT_INTERNAL_OBJECTS_H <freetype/internal/ftobjs.h>  回复  更多评论
  

# re: 使用VS2005编译freetype的动态链接库 2013-04-10 16:30 xmg
我也遇到这个问题,freetype中定义的宏不能通过@ddr
  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理