zoukankan      html  css  js  c++  java
  • csqlite编译相关配置问题

    csqlite是非常好用的数据库,同时该数据库是开源的,基于一定原因可能需要编译自己需要的csqlite版本,那么下面介绍内容也会你就会感兴趣了。

    这里要实现的目标是使用VS工具能够正确编译csqlite源码文件生成csqlite的动态库文件。

    准备:

    csqlite源码文件:

    sqlite-amalgamation-3080803.zip

    sqlite-dll-win32-x86-3080803.zip

    *注:这里我在官方网站下载了2个压缩包,为什么呢以为里面的5个文件都需要使用(shell.c/sqlite3.c/sqlite3.h/sqlite3ext.h/sqlite3.def)。

    编译工具:

    VS2013 UPDATE 4

    环境配置:

    1.启动VS2013创建win32的空的dll工程

    2.添加现有项:shell.c/sqlite3.c/sqlite3.h/sqlite3ext.h/sqlite3.def

    3.设置项目属性:

        1)生成动态库dll(这是默认的),字符集选择多字节的

        2)C/C++选项: 预处理定义:SQLITE_ENABLE_COLUMN_METADATA/SQLITE_ENABLE_RTREE(为什么呢?后面将)

        3)连接器选项:输入:模块定义文件:sqlite3.def

    *注:SQLITE_ENABLE_COLUMN_METADATA 对应def文件中导出的函数

    sqlite3_column_database_name
    sqlite3_column_database_name16

    sqlite3_column_origin_name
    sqlite3_column_origin_name16
    sqlite3_column_table_name
    sqlite3_column_table_name16

    SQLITE_ENABLE_RTREE对应def文件导出的函数

    sqlite3_rtree_geometry_callback
    sqlite3_rtree_query_callback

    如果不设置这两个宏的话不会直接编译通过,会提示类似:“1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_rtree_geometry_callback”

    编译:如果以上设置无误的话直接编译就会通过,并且生成lib文件和dll文件

    ==========================================================

    在介绍一种快速生成lib文件的方法(适用于存在def文件的情况)

    官方下载:sqlite-dll-win32-x86-3080803.zip

    这个压缩包里面只有def文件和dll文件,要想正常使用怎么办呢?

    答:使用VS2013自带的命令提示行工具,输入命令:LIB /DEF:def文件路径,这样就会生成默认的lib文件

    =======================================================================

    破坏式编译csqlite源文件

    具体就是在sqlite3.h和sqlite3.cpp中前面插入一段导出代码

    例如:

    1 #pragma once
    2 
    3 #ifdef CSQLITE_DLL_FINAL2_EXPORTS
    4 #define SQLITE_API __declspec(dllexport)
    5 #else
    6 #define SQLITE_API __declspec(dllimport)
    7 #endif // !CSQLITE_DLL_FINAL2_EXPORTS

    这样就可以达到导出csqlite库的目的。但是这种方法会破坏原始的csqlite文件所以不推荐。

    具体可操作的方法是在创建csqlite库工程时,除了添加sqlite3.h和sqlite3.cpp,还要创建添加一个头文件,头文件里面放上面代码,这样,在sqlite3.h和sqlite3.cpp前面进行头文件引用就可以正常导出了。

  • 相关阅读:
    利用pipe实现进程通信一例
    司机和售票员问题 信号signal注册一例
    HDU 1003
    HDU 1847
    HDU 1846(巴什博弈)
    《断弦》感想
    夺冠概率
    熄灯问题
    HDU 2176(Nim博弈)
    NYOJ 541
  • 原文地址:https://www.cnblogs.com/superstargg/p/4380787.html
Copyright © 2011-2022 走看看