2023年6月22日发(作者:)
SQLite3源码在Windows平台编译SQLite3源码在Windows平台编译⼯具:Mingw32⽅法:命令⾏,尽量使⽤管理员模式gcc -shared sqlite3.c -o 注意MinGW只⽣成32位的dll。另有⼀个分开的MinGW64⼯程可以⽤来⽣成64位的dll。可以推断其命令⾏语法是类似的。需要注意的是最近的MSVC的版本⽣成的DLLs可能不能⼯作到WinXP或者更早版本的windows上。因此为了最⼤限度的兼容你的⽣成的dll,推荐MinGW。⼀个好的经验法则是使⽤MinGW去⽣成32位的dlls,使⽤msvc去⽣成64位的dlls。在⼤部分情况下,你会想要去哦去提供编译时间相关的选项的基本的命令来调整你的程序。通常使⽤的编译时间相关的选项包括:-Os - Optimize for size. Make the DLL as small as possible.-O2 - Optimize for speed. This will make the DLL larger by unrolling loops and inlining functions.-DSQLITE_ENABLE_FTS4 - Include the engine code in SQLite.-DSQLITE_ENABLE_RTREE - Include the .-DSQLITE_ENABLE_COLUMN_METADATA - This enables some extra APIs that are required by some common systems, includingRuby-on-Rails.⼯具:Visual Studio 2010(1)把SQLite编译成动态链接库: 打开Visual Studio 2010,新建⼀个名为sqlite3的Visual C++ Win32⼯程,在⼯程向导页中选择⼯程的类型为 "DLL", 并且把创建为空项⽬的复选框钩上。通过⼯程--->添加现有项...,把单⼀⽂件sqlite3.c添加到⼯程中。为了⽣成在链接时需要⽤到的lib⽂件,需要在⼯程中添加模块定义⽂件。根据sqlite3.h中列出的导出函数名,我们可以⾃⼰写.def⽂件,例如:EXPORTSsqlite3_aggregate_contextsqlite3_aggregate_countsqlite3_auto_extensionsqlite3_backup_finishsqlite3_backup_initsqlite3_backup_pagecountsqlite3_backup_remainingsqlite3_backup_stepsqlite3_bind_blobsqlite3_bind_double;...... 也可以使⽤已写好的.def⽂件,下载已编译好的SQLite DLL库,⾥⾯有,把它拷贝到我们的sqlite3项⽬中,在⼯程属性的Linker--->Input--->Module Definition File中输⼊。设置项⽬编译成Release版本,编译后⽣成和。 编译命令⾏管理⼯具:如果想编译出命令⾏程序,则需要创建⼀个空的Win32 控制台程序,然后在往⼯程⾥添加⽂件sqlite3.c和shell.c,直接编译即可。 使⽤动态链接库 新建⼀个空项⽬test,把, , sqlite3.h拷贝到项⽬⽬录下,把sqlite3.h添加到项⽬中。新建主程序源⽂件,如下:#include 编译时,出现以下错误:unresolved external symbol __beginthreadex unresolved external symbol __endthreadex 这是在使⽤MFC的类时出现连接错误。 解决⽅法: 1.⼯程右键——>“Project”菜单——〉“Setting”菜单项——〉General选项卡,在Microsoft Fountion Classes:中选择:Use MFC in StaticLibrary。 2.再在C/C++选项卡中的在Category中选择Code Generation,再在Use run-time library中选择Debug Multithreaded(若在Win32 Debug环境下)或者multithreaded。 其中: Single-Threaded单线程静态链接库(release版本) Multithreaded多线程静态链接库(release版本) multithreaded DLL多线程动态链接库(release版本) Debug Single-Threaded单线程静态链接库(debug版本) Debug Multithreaded多线程静态链接库(debug版本) Debug Multithreaded DLL多线程动态链接库(debug版本) 2、编译⽣成Win32平台下的动态链接库(*.dll)。 (1)启动VC++6.0,创建⼀个Win32 Dynamic_Link Library,选择⼀个空的DLL⼯程,⼯程名为“SQLite_Win32_DLL”; (2)将sqlite-amalgamation-*.zip解压后的sqlite3.c、sqlite3.h、sqlite3ext.h以及sqlite-dll-win32-x86-*.zip解压后的模块定义⽂件⼀起添加到⼯程中; (3)【Project】->【Settings…】->【C/C++】->【Category】->【General】->【Preprocessor definitions】 新增编译选项:SQLITE_ENABLE_COLUMN_METADATA,编译通过即可⽣成dll。 但此时只⽣成了sqlite_win32_⽂件,没有⽣成对应的引⼊库(sqlite_win32_)⽂件。 具体⽅法是如下: 修改sqlite3.c⽂件中的SQLITE_API宏定义,将“# define SQLITE_API”修改成“# define SQLITE_API __declspec(dllexport)”。 或者直接把添加在Linker--->Input--->Module Definition File中。 再重新编译即可⽣成sqlite_win32_和sqlite_win32_。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1687424267a9042.html
评论列表(0条)