FastDB在VS2008下使用UNICODE方式编译
2010-02-19 21:23
337 查看
为了在毕业设计中使用内存数据库,选中了FastDB作为项目中使用的内存数据库。
从网上下了源代码后编译,链接都通过了。
但是在自己的项目中加入FastDB后,链接时出现大量重复链接。经过研究发现是默认编译FastDB时使用的是多字符集,而我的项目使用的是UNICODE编码方式。
修改FastDB的Makefile.mvc文件后重新编译,出现了类型转换错误。
经过研究,是作者在几个小地方没有做好UNICODE的转换,以及因为自定义类型而导致的编译器无法识别正确的转换方法而出现的错误。
需要修改的文件:
makefile.mvc
修改后
xml.cpp
和
修改后
和
subsql.cpp
和
修改后
和
不要使用fastdb.sln编译,无论什么方式在vs2008下subsql都不能通过编译,因时间问题不再解决此问题。
从网上下了源代码后编译,链接都通过了。
但是在自己的项目中加入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都不能通过编译,因时间问题不再解决此问题。
相关文章推荐
- VS2010和VS2008使用不同编译方式在64位机器生成注册表对比
- VS2010和VS2008使用不同编译方式在64位机器生成注册表对比
- 整理MINGW编译dll使用JNI被java调用的几种方式
- VS下如何配置才能使用 cl 命令行方式编译 C/C++ 程序
- 使用VS2008编译lua
- GDAL1.9.1 IN VS2008 C#中的编译及使用
- Windows中使用命令行方式编译打包Android项目
- Linux下使用源代码编译方式安装MySQL
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
- 使用Vs2005 VS2008编译真正的静态Qt程序
- 在Windows下使用汇编方式编译OpenSSL方法
- 使用编译时注解方式实现View注入(Android Studio)
- vs2008专业版使用wtl编译时提示: cannot open include file 'atlres.h'
- Windows下使用VS2008编译RobotVision库
- Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式
- VS2008使用Internet方式连接VSS2005(转)
- 使用VS2008编译EDK2源码并调试
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- windows下使用vs2008编译x264支持多线程
- 在winodws上使用vs2008编译QGis-1.4.0