您的位置:首页 > 数据库

FastDB在VS2008下使用UNICODE方式编译

2010-02-19 21:23 337 查看
为了在毕业设计中使用内存数据库,选中了FastDB作为项目中使用的内存数据库。

从网上下了源代码后编译,链接都通过了。

但是在自己的项目中加入FastDB后,链接时出现大量重复链接。经过研究发现是默认编译FastDB时使用的是多字符集,而我的项目使用的是UNICODE编码方式。

修改FastDB的Makefile.mvc文件后重新编译,出现了类型转换错误。

经过研究,是作者在几个小地方没有做好UNICODE的转换,以及因为自定义类型而导致的编译器无法识别正确的转换方法而出现的错误。

需要修改的文件:

makefile.mvc

]!IFNDEF GENERATE_DLL
GENERATE_DLL=0
!ENDIF

!IFNDEF FAULT_TOLERANT
FAULT_TOLERANT=0
!ENDIF

!IFNDEF DEBUG
DEBUG=1
!ENDIF

!IFNDEF UNICODE
UNICODE=0
!ENDIF

!IFNDEF STATIC
STATIC=1
!ENDIF


修改后

]!IFNDEF GENERATE_DLL
GENERATE_DLL=1
!ENDIF

!IFNDEF FAULT_TOLERANT
FAULT_TOLERANT=0
!ENDIF

!IFNDEF DEBUG
DEBUG=0
!ENDIF

!IFNDEF UNICODE
UNICODE=1
!ENDIF

!IFNDEF STATIC
STATIC=0
!ENDIF


xml.cpp

]FILE* f = _tcscmp(file, "-") == 0 ? stdout : _tfopen(file, "w");




]FILE* f = _tcscmp(file, "-") == 0 ? stdin : _tfopen(file, "r");


 修改后

]FILE* f = _tcscmp(file, _T("-")) == 0 ? stdout : _tfopen(file, _T("w"));




]FILE* f = _tcscmp(file, _T("-")) == 0 ? stdin : _tfopen(file, _T("r"));


subsql.cpp

]if (!exportDatabaseToXml(buf)) {




]if (!importDatabaseFromXml(buf)) {


修改后

]if (!exportDatabaseToXml((char_t *)buf)) {




]if (!importDatabaseFromXml((char_t *)buf)) {


不要使用fastdb.sln编译,无论什么方式在vs2008下subsql都不能通过编译,因时间问题不再解决此问题。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  file 数据库 dll 编译器