使用 minGW-w64 编译 SQLite 合并文件和 C++ 文件

Compiling SQLite amalgamation file with C++ file using minGW-w64

我刚刚开始尝试使用 C/C++ 和 SQLite,并安装了 minGW-w64 编译器并且能够得到小小的“Hello, world”。编译为 .exe 文件的代码和 运行 它。

然后我把sqlite3.c合并文件加到目录下,尝试用helloworld.c文件编译,第一个结果是很多很多行的错误和警告,看来是因为我用 g++ 而不是 gcc.

我有两个非常基本的问题。

  1. 总是以这种方式使用 sqlite3.c 合并文件是否正确,将其与其余代码一起编译,即使它是一个相当大的文件。 SQLite 网站指出,“建议所有应用程序使用合并”和“使 [它们] 运行 更快。”

即使没有使用 SQLite 语句,单独编译的 hello world 的 .exe 文件为 53kb,组合的 .exe 文件为 1,015kb。

  1. 为什么使用 g++ 生成了大错误列表而 gcc 没有生成任何错误列表?我意识到 g++ 适用于 c 和 c++,而 sqlite3 是 c。这是否意味着 c++ 文件和 sqlite3.c 不能一起编译?

谢谢。

是的,像那样捆绑 sqlite 是预期的行为。

您可以先使用 C 编译器编译 sqlite3.c,然后 link 将结果转换为二进制文件:

gcc -O2 -c sqlite3.c
g++ -O2 sqlite3.o myapp.cpp -o myapp.exe

我强烈建议使用简单的 makefile 或 Cmake 来自动化这个项目。