使用OMIT选项从MVS 2013编译cl.exe时出现sqlite3错误

时间:2015-05-27 15:10:32

标签: c++ sqlite

当我尝试编译sqlite3.c和shell.c文件来创建库时,我写了

cl.exe /DSQLITE_OMIT_"one.of.the.option." sqlite3.c shell.c

它返回错误:

sqlite3.c
sqlite3.c(155868) : error C2129: static function 'void sqlite3"name of the option choosen"(Parse *,Expr *,Expr *,Expr *)' declared but not defined
sqlite3.c(13360) : see declaration of 'sqlite3"name of the choosen option"'
 shell.c
  Generating Code...

例如:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin>cl.exe -Os /DSQLITE_OMIT_ANALYZE sqlite3.c shell.c
    sqlite3.c
sqlite3.c(155868) : error C2129: static function 'void sqlite3Attach(Parse *,Expr *,Expr *,Expr *)' declared but not defined
        sqlite3.c(13360) : see declaration of 'sqlite3Attach'
shell.c
Generating Code...

所有OMIT选项都会发生这种情况。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您正在尝试编译库的合并版本(打包为单个源文件),如documentation中所述:

  

重要说明:SQLITE_OMIT_ *选项不适用于合并或预先打包的C代码文件。 SQLite_OMIT_ *编译时选项仅在从规范源文件构建SQLite时才能正常工作。

参见"建立合并"在how to compile部分中有关如何使用自定义选项构建合并的方法:

  

首先通过运行SQLite源代码树顶部的configure脚本,或者在源树顶部创建一个模板Makefile,来构造一个合适的Makefile。然后手动编辑此Makefile以包含所需的编译时选项。最后运行:

Error in system(paste(shQuote(pandoc_path), "--version"), intern = TRUE) : 
  'CreateProcess' failed to run 'D:\Datos de Usuarios\Usuario\AppData\Local\Pandoc\pandoc.exe --version'
Calls: <Anonymous> ... get_pandoc_version -> with_pandoc_safe_environment -> force -> system
Ejecución interrumpida
     

或在带有MSVC的Windows上:

 make sqlite3.c