vs - vs2013中编译sqlite3.44.2

文章目录

    • vs - vs2013中编译sqlite3.44.2
    • 概述
    • 笔记
    • 工程输出归档
    • END

vs - vs2013中编译sqlite3.44.2

概述

以前在vs2019下编译了sqlite3.44.2, 好使。做了笔记(sqlite3.44.2的编译)
现在准备将手头的vs2019工程改为vs2013的,自然要将sqlite也编译为vs2013版本的。
按照原来的笔记编译,不好使。
估计是TCL不是VS2013版本的。
准备按照官方说明,用VS2013从头编译一次。
官方的编译文档为 D:\3rd_prj\sqlite\doc\compile-for-windows.md. 是按照vs2022 + win11 来描述的。
看看vs2013 + win10行不行。

笔记

git库地址 https://github.com/sqlite/sqlite.git
迁出到本地 D:\3rd_prj\sqlite,切到3.44.2
在这里插入图片描述
下载TCL
https://www.tcl.tk/software/tcltk/download.html
需要8.6版本或更高版本
在这里插入图片描述
查了一下,我上次编译用的tcl8613版本,本地就有,不重新下载了。
E:\tools\database\sqlite3.44.2\tcl8613-src.zip
代码解开到 E:\tools\database\sqlite3.44.2\tcl8613-src_vs2013

我只想编译vs2013x64版本的sqlite, tcl编译也用vs2013.
打开vs2013x64本地命令行

cd /d E:\tools\database\sqlite3.44.2\tcl8613-src_vs2013\tcl8.6.13\win
nmake /f makefile.vc release
nmake /f makefile.vc INSTALLDIR=d:\TCL_vs2013 install
将 D:\TCL_vs2013\lib\tcl86t.lib 拷贝为 D:\TCL_vs2013\lib\tcl86.lib
将 D:\TCL_vs2013\bin\tclsh86t.exe 拷贝为 D:\TCL_vs2013\bin\tclsh.exe


将 D:\TCL_vs2013\bin\ 加入PATH环境变量
在这里插入图片描述
关掉现有的VS2013x64本地命令行
开一个新的VS2013x64本地命令行

set TCLDIR=D:\TCL_vs2013
cd /d D:\3rd_prj\sqlite
nmake /f makefile.msc

shell.c中有错误,按照提示修正一下。

shell.c
shell.c : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
shell.c(612) : warning C4204: 使用了非标准扩展 : 非常量聚合初始值设定项
shell.c(709) : error C2065: “ENABLE_VIRTUAL_TERMINAL_PROCESSING”: 未声明的标识符
shell.c(732) : warning C4204: 使用了非标准扩展 : 非常量聚合初始值设定项
shell.c(26306) : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
shell.c(26315) : error C2001: 常量中有换行符
shell.c(26316) : error C2143: 语法错误 : 缺少“;(在“const”的前面)
shell.c(26330) : error C2065: “zBom”: 未声明的标识符
shell.c(26330) : warning C4047: “=”:“int”与“const char *”的间接级别不同
shell.c(26397) : error C2065: “zBom”: 未声明的标识符
shell.c(26397) : warning C4047: “函数”:“const char *”与“int”的间接级别不同
shell.c(26397) : warning C4024: “oPutsUtf8”: 形参和实参 1 的类型不同
shell.c(26410) : error C2065: “zBom”: 未声明的标识符
shell.c(26410) : warning C4047: “函数”:“const char *”与“int”的间接级别不同
shell.c(26410) : warning C4024: “oPutsUtf8”: 形参和实参 1 的类型不同
sqlite3.c
正在生成代码...
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\cl.EXE"”: 返回代码“0x2 ”
Stop.

根据 https://learn.microsoft.com/zh-cn/windows/console/setconsolemode
修改makefile.msc, 添加 ENABLE_VIRTUAL_TERMINAL_PROCESSING 的定义

###############################################################################
############################## START OF OPTIONS ###############################
###############################################################################

# add by ls
!IFNDEF ENABLE_VIRTUAL_TERMINAL_PROCESSING
ENABLE_VIRTUAL_TERMINAL_PROCESSING = 4
!ENDIF

# The toplevel directory of the source tree.  This is the directory
# that contains this "Makefile.msc".
#
TOP = .

再次尝试nmake

nmake /f makefile.msc clean
nmake /f makefile.msc

不行,还是报错。
那直接在shell.c中改。

# if CIO_WIN_WC_XLATE
/* Define console modes for use with the Windows Console API. */
#  define SHELL_CONI_MODE \
  (ENABLE_ECHO_INPUT | ENABLE_INSERT_MODE | ENABLE_LINE_INPUT | 0x80 \
  | ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS | ENABLE_PROCESSED_INPUT)

#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
#endif 

#  define SHELL_CONO_MODE (ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT \
  | ENABLE_VIRTUAL_TERMINAL_PROCESSING)
# endif

再次尝试nmake

nmake /f makefile.msc

ENABLE_VIRTUAL_TERMINAL_PROCESSING的报错没有了,继续解决其他的编译报错。

shell.c
shell.c : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
shell.c(612) : warning C4204: 使用了非标准扩展 : 非常量聚合初始值设定项
shell.c(737) : warning C4204: 使用了非标准扩展 : 非常量聚合初始值设定项
shell.c(26304) : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
shell.c(26320) : error C2001: 常量中有换行符
shell.c(26321) : error C2143: 语法错误 : 缺少“;(在“const”的前面)
shell.c(26335) : error C2065: “zBom”: 未声明的标识符
shell.c(26335) : warning C4047: “=”:“int”与“const char *”的间接级别不同
shell.c(26402) : error C2065: “zBom”: 未声明的标识符
shell.c(26402) : warning C4047: “函数”:“const char *”与“int”的间接级别不同
shell.c(26402) : warning C4024: “oPutsUtf8”: 形参和实参 1 的类型不同
shell.c(26415) : error C2065: “zBom”: 未声明的标识符
shell.c(26415) : warning C4047: “函数”:“const char *”与“int”的间接级别不同
shell.c(26415) : warning C4024: “oPutsUtf8”: 形参和实参 1 的类型不同
sqlite3.c
正在生成代码...
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\cl.EXE"”: 返回代码“0x2 ”
Stop.

在这里插入图片描述
在VSCODE中可以看到26320行有乱码,删掉这个乱码字符,继续尝试编译。

nmake /f makefile.msc
.c  /link /pdb:sqlite3sh.pdb /DEBUG  /NOLOGO /MACHINE:X64   sqlite3res.lo
shell.c
shell.c : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
shell.c(612) : warning C4204: 使用了非标准扩展 : 非常量聚合初始值设定项
shell.c(737) : warning C4204: 使用了非标准扩展 : 非常量聚合初始值设定项
sqlite3.c
正在生成代码...
d:\3rd_prj\sqlite\shell.c(20382) : warning C4756: 常量算法中溢出
LINK : 没有找到 sqlite3.exe 或上一个增量链接没有生成它;正在执行完全链接

编译成功了,虽然有警告,咱也不知道咋解决,先这样。
在这里插入图片描述
已经生成了sqlite3.dll.
测试一下

nmake /f makefile.msc releasetest

在这里插入图片描述
初步看,好像编译的没问题,等待测试完成。
在这里插入图片描述
好像测试出错误来了,不过等不起,算了。
如果在程序中用到sqlite出错时,再想办法解决。

工程输出归档

在这里插入图片描述

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/693249.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用LabVIEW进行大数据数组操作的优化方法

针对大数据量数组操作,传统的内存处理方法可能导致内存不足。通过LabVIEW的图像批处理技术,可以有效地进行大数据数组操作,包括分块处理、并行处理和内存优化等。这种方法能显著提高处理效率和系统稳定性。 图像批处理的优势 内存优化&#…

Qt Designer 生成的 .ui 文件转为 .py 文件并运行

1. 使用使用 PyUIC将 .ui 转 .py (1)打开命令行终端(可以用cmd,或pycharm 下面的 Terminal)。 (2)导航到包含.ui文件的目录。 cd 你的ui文件路径 (3)运行以下命令来…

H.264官方文档下载

H.264是ITU(International Telecommunication Union,国际通信联盟)和MPEG(Motion Picture Experts Group,运动图像专家组)联合制定的视频编码标准。其官方文档可以在ITU官网上下载:https://www.…

架构设计-用户信息及用户相关的密码信息设计

将用户的基本信息和用户密码存放在不同的数据库表中是一种常见的安全做法,这种做法旨在增强数据的安全性和管理的灵活性。以下是这种做法的几个关键原因: 安全性增强: 当用户密码被单独存放在一个表中时,可以使用更强大的加密和哈…

计算机网络 期末复习(谢希仁版本)第8章

元文件就是一种非常小的文件,它描述或指明其他文件的一些重要信息。这里的元文件保存了有关这个音频/视频文件的信息。 10. 流式:TCP;流式实况:UDP。

QT C++ QTableWidget 表格合并 setSpan 简单例子

这里说的合并指的是单元格,不是表头。span的意思是跨度、宽度、范围。 setSpan函数需要设定行、列、行跨几格,列跨几格。 //函数原型如下 void QTableView::setSpan(int row, i nt column, 、 int rowSpanCount,/*行跨过的格数*/ int columnSpanCount…

opencv笔记 -- 核心功能模块(Mat)

笔者之前零零碎碎地用过一些opencv,但是一直没有足够详尽的了解,正巧刷到了opencv的tutorial,仅以此记录。 网址:link Mat - 基本的图像容器 一张普通的图片,如果想让计算机也能读得懂的话,我们需要把他转…

《精通ChatGPT:从入门到大师的Prompt指南》附录B:推荐阅读资源

作者:斯图尔特拉塞尔 (Stuart Russell) 和 彼得诺维格 (Peter Norvig) 简介:这本书被誉为人工智能领域的经典教材,内容涵盖了AI的基本原理、算法及其应用。无论是入门者还是专业研究者,都能从中获得启发。 2. 《深度学习》 作者…

Vue前端在线预览文件插件

Vue前端在线预览文件插件 一、使用场景 1.1.像文档资料等,只想让他人在线预览,但不能下载。此等场景需求可以用到此插件。 二、此文档介绍两种插件 1.view.xdocin插件 (上线后免费几天,然后收费,添加作者后,可以延…

OpenHarmony napi 编译 .so 并打包成 .har

一、前言 最近在搞公司标准产品适配OpenHarmony 平台, 按照行业上的常用方法,在Android 是将底层代码用c 封装成 xxx.so ,然后将其他一部分打包成 xxx.jar。 因此,在OpenHarmony 平台也是打算按照这个模式。正所谓,好…

CS1061 “HtmlHelper”未包含“Partial”的定义,并且找不到可接受第一个“HtmlHelper”类型参数的可访问扩展方法“Partial”

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS1061 “HtmlHelper”未包含“Partial”的定义,并且找不到可接受第一个“HtmlHelper”类型参数的可访问扩展方法“Partial”(是否缺少 using 指令或程序集引用?) 14_Views_Message_E…

【面试干货】MySQL 三种锁的级别(表级锁、行级锁和页面锁)

【面试干货】MySQL 三种锁的级别(表级锁、行级锁和页面锁) 1、表级锁2、行级锁3、页面锁4、总结 💖The Begin💖点点关注,收藏不迷路💖 在 MySQL 数据库中,锁是控制并发访问的重要机制&#xff0…

CF279A Point on Spiral 题解

解题思路 按照题目中的规律画出来的图片如下: 那么,我们直接根据规律判断当前查询的节点在那一条线段上就可以了。易得,当前的基础转向次数为 max ( ∣ x ∣ − 1 , ∣ y ∣ − 1 ) 4 (|x|-1,|y|-1)\times 4 (∣x∣−1,∣y∣−1)4&#x…

VueRouter路由与Vuex状态管理

前言 随着前端技术的快速发展和前后端分离架构的普及,单页面应用(SPA)已成为现代Web开发的主流。在SPA中,前端路由和状态管理扮演着至关重要的角色。Vue3作为当前流行的前端框架之一,提供了强大的路由(Vue …

【React】json-server的使用

参考文章 【文章一】 【文章二】 json-server详解 1、简介 Json-server 是一个零代码快速搭建本地 RESTful API 的工具。它使用 JSON 文件作为数据源,并提供了一组简单的路由和端点,可以模拟后端服务器的行为。github地址:https://github.…

理解数仓建模

​​​在数仓建设的过程中,由于未能完全按照规范操作, 从而导致数据仓库建设比较混乱,常见有以下问题: 数仓常见问题 ● 数仓分层不清晰:数仓的分层没有明确的逻辑,难以管理和维护。 ● 数据域划分不明确…

启动游戏出现concrt140.dll错误的解决方法

concrt140.dll是一个动态链接库文件,属于Microsoft Visual C 2015 Redistributable组件集的一部分。这个文件是并发运行时库(Concurrency Runtime)的一部分,对于支持和增强应用程序的多线程与并发执行能力至关重要。它包含了实现并…

QT c++ 堆栈一些理解--限制对象建立在栈上--栈堆区别

图示形象化理解: 堆栈都是数据结构存取数据的方式 堆:理解为一个堆积物体,独立的分散的,当需要空间时,再找一个地方。需要的就是new关键字,动态申请一个空间。程序员自己动态分配空间,使用指针…

线性回归例子, 学习笔记[机械学习]

参考书籍, [pythonによる機械学習入門] y ax b # 直线的线性回归 import numpy as np import matplotlib.pyplot as plt # 求最小二乘法的回归直线,用到的库 from sklearn import linear_model# x 和 y的单点图 x np.random.rand(100, 1) x x*4-2 y 3*x-2 # 增加一部分乱…

LLVM Cpu0 新后端10

想好好熟悉一下llvm开发一个新后端都要干什么,于是参考了老师的系列文章: LLVM 后端实践笔记 代码在这里(还没来得及准备,先用网盘暂存一下): 链接: https://pan.baidu.com/s/1V_tZkt9uvxo5bnUufhMQ_Q?…