zoukankan      html  css  js  c++  java
  • 一个美丽的发现wxSQLite3

    “美是到处都有的,对于我们的眼睛不是缺少美,而是缺少发现”,罗丹的这句名言不仅适用于艺术创作,而且也适用于软件开发。具有聪明才智的人,总是不甘寂寞而乐于把自己的才华与人分享,善于发现和使用这些人的代码,实在是一个提高软件开发效率的明智之举。并且只有借助于众人的智慧才是开发出优秀软件的唯一途径。

    wxSQLite3 就是这样的一个优秀作品,它把 SQLite 嵌入式数据库与 wxWidgets 结合起来,使用 C++ 语法对 SQLite 数据库的 C API 进行了封装,而且作为 wxWidgets 的一个组件,自然很好的融合了其特点,使得 wxWidgets 与  SQLite 数据库配合使用天衣无缝,堪称珠联璧合,比我自己目前正在编写的数据库操作代码优雅得多,正是我所需要的好东西。

    编译 wxSQLite3 很简单,与 wxWidgets 类似,在 build 目录下可以找到一个对应 VC 编译器的 makefile.vc 文件,开头部分是编译选项,跟编译 wxWidgets 时使用的参数项大同小异,一望便知。然后使用命令 nmake -f makefile.vc,稍等片刻就编译完成。我照例把 wxSQLite3 编译成静态库使用,只是有一点要注意,makefile 文件中有个变量 WXSQLITE3_LIB_CXXFLAGS 在编译成静态库的时候要手动修改一下,将其中的 /MD 字段改为 /MT。这两个都是 cl.exe 的参数,具体含义可以查看MSDN。另外还需要注意的是,使用 wxSQLite3 的静态库时仍然依赖 SQLite3。所以在 VC 中使用 wxSQLite3 的话,一定要记得加入:

    C++代码 复制代码 收藏代码
    1. #pragma comment(lib,"sqlite3.lib") 



    否则链接的时候就会出现类似的错误:

    Vc代码 复制代码 收藏代码
    1. error LNK2001: unresolved external symbol _sqlite3_backup_step 
    2. error LNK2001: unresolved external symbol _sqlite3_open 
    3. error LNK2001: unresolved external symbol _sqlite3_xxxx 
    4. error LNK2001: unresolved external symbol _sqlite3_xxxx_xxxx 
    5. error LNK2001: unresolved external symbol _sqlite3_xxxx 
    6. ... 


    另外,建议编译 wxSQLite3 的静态库的时候,SQLite3 也采用静态库的方式提供,避免发布的时候还要带上一个 dll 文件,麻烦!

    关于生成 SQLite3 静态库的方法,可以参考这里:
    http://haiyi.iteye.com/blog/287904


    顺便提一下,CppSQLite3 也是一个关于 SQLite 优秀的 C++ 封装。比 wxSQLite3 更加通用一些,只是作者已经很久没有更新了。相比之下,wxSQLite3 的更新速度几乎和 SQLite3 官方同步,最适合像我这样喜新厌旧的人了

    两个库的地址:
    wxSQLite3
    http://wxcode.sourceforge.net/components/wxsqlite3/
    CppSQLite3
    http://www.codeproject.com/KB/database/CppSQLite.aspx
  • 相关阅读:
    [bug] 未能加载文件或程序集“SIPEPS, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。
    [MongoDB]索引
    [MongoDB]Profiling性能分析
    [MongoDB]mapReduce
    tms mqtt
    mqtt介绍
    咏南中间件统一的数据序列(还原)类
    支付宝签名
    咏南中间件开始支持中间件桥接
    咏南数据序列(还原)类
  • 原文地址:https://www.cnblogs.com/bmate/p/2683239.html
Copyright © 2011-2022 走看看