【发布时间】:2013-01-29 02:01:17
【问题描述】:
- 我正在使用使用 ming gcc 的 dev c++ IDE(我不确定)
- 我想在我的 win32 c 应用程序中使用 sqlite3
- 我下载了 sqlite3.dll 和 sqlite3.dev 并使用 dlltool 创建了一个类似 libsqlite3.a 的 .a 文件并粘贴到 dev cpp 的 lib 文件夹中,并在项目选项 -> 参数中添加了这个路径
- 我将头文件 sqlite3.h 复制到了包含文件夹中(我从另一个网站获得的 - http://www.opensource.apple.com/source/SQLite/SQLite-74/derived_source/sqlite3.h)
- 我执行了程序并收到消息“程序无法启动,因为您的计算机中缺少 sqlite3.dll”
- 所以我将 sqlite3.dll 复制到我的工作目录中,然后它就可以工作了
但是
如何在编译时使 sqlite.* 保持静态?
我的意思是我认为通过包含 libsqlite3.a,最终的 exe 将不依赖于任何外部 dll。
所以我想知道如何以不需要 dll 的方式进行编译,并且这样做可以使我的 windows 程序独立。
我有创建一个 .lib 文件而不是 .a 文件吗?
在回答和 cmets 后编辑: 此外,devpak 工作正常......但我想知道如何将文件包含到项目中或创建 .a 文件,所以我正在尝试这种方式,因为如果某些组件不提供 devpak,那么这将是我们需要的方式编译..不是吗?
编辑显示我在 CL 和两个 cmets 回答后做了什么
这就是我将 sqlite.c 添加到项目列表的方式
这是编译日志
编译器:默认编译器
构建 Makefile: "C:\Users\jayapalc\Documents\test-sqlite\Makefile.win"
正在执行 make...
make.exe -f "C:\Users\jayapalc\Documents\test-sqlite\Makefile.win" 全部
g++.exe -c sqlite3.c -o sqlite3.o -I"lib/gcc/mingw32/3.4.2/include" -I"include/c++/3.4.2/backward" -I"include/c++/3.4.2/mingw32" -I"include/c++/3.4.2" -I"include"
sqlite3.c: 在函数 `void strftimeFunc(sqlite3_context*, int, sqlite3_value**)':
sqlite3.c:14727:错误:来自
void*' tochar*'的无效转换
我在 sqlite.org/sqlite-amalgamation-3071502.zip 中得到的文件是
shell.c、sqlite3.h、sqlite3.c、sqlite3ext.h,我在其他讨论中看到不需要 shell.c...
此外,人们都在谈论 gcc 和 g++...。
【问题讨论】:
-
请将您的 IDE 更新到以下版本,该版本修复了大量错误,附带 GCC 4.7.1 (x64) 或 4.7.2,并且完全可移植:sourceforge.net/projects/orwelldevcpp
标签: winapi sqlite static-libraries dev-c++