XFace是一个开源虚拟人脸动画工具软件,使用MPEG4的人脸模型定义(FDP)和动画参数(FAP),已经很久没有更新过了。网址http://xface.fbk.eu/ 。
重新编译XFace的代码,需要多个第三方的库,如boost,SDL,wxWidgets和xerces。
编译环境为win7x64,vs2008。
在目前版本的XFace(1.0版本),我使用boost1.5.2(较早的版本应该也没问题),SDL(版本没关系),wxWidgets(2.8.12)。需要说明的是wxWidgets的2.6.x和2.9.x在编译中都存在问题(如wxSAVE,wxFILE_MUST_EXIST等undeclared identifier错误,可以通过修改代码解决,但是不推荐)。XFace的文档中说2.6.2在vs2003中可以使用,这可能是编译环境的不同导致。SDL的开发库有x86和64位版本可选,在win7x64+vs2008的环境下,应使用x86版本的SDL开发库。
编译后,release版本可正常运行,也可以进入调试状态。但是Debug版本无法运行,缺少未指明的dll,目前未能解决。
自己做了一个基于xface+directshow的应用,编译中出现的两个错误:
1. Need to include strsafe.h after tchar.h
使用graphbase.cpp中开始加入 include <tchar.h>. 很多人写需要windows.h 我这里没用
2. EXECUTE_ASSERT , ASSERT 未定义,仅在wxwidgets和diretshow一起使用的时候出现
'EXECUTE_ASSERT': identifier not found
原因是wxdebug.h这个文件在wxwidget和directshow中都存在,但内容不同。如果要使用directshow中的wxdebug,在include <streams.h>前使用
#ifdef __WXDEBUG__
#undef __WXDEBUG__
#endif
#include <streams.h>
p.s. 用VC2008编译VC6的东西,链接时出错:LINK : fatal error LNK1104: cannot open file 'LIBCD.lib'
MSDN说是可以把LIBCD.lib这个库给忽略掉,做法如下: Project -> Properties -> Linker -> Command Line -> Additional options 中加入:/nodefaultlib:libcd