Small. Fast. Reliable.
Choose any three.
This page explains how to compile SQLite with Microsoft Visual Studio.NET (aka VS.NET).

Download

Download and unzip the file sqlite_source.zip. Do not use the .tar.gz files because they have not been pre-processed for use with Windows.

Create a starter DLL project

1. File > New > Project

2. Under Project Types, select Visual C++ Projects and then Win32.

3. Choose the project template "Win32 Project".

4. Give the project a name and click OK.

5. When the "Win32 Application Wizard" appears, choose Application Settings. set the Application Type to DLL and check the box that says "Empty project". Click Finish. You now have a blank DLL project.

Add the SQLite files to the project

7. Project > Add Existing Item

8. Add all the .c and .h files that you unzipped, except for: tclsqlite.c and shell.c.
Note: You may add tclsqlite.c and shell.c, but then you have to define the preprocessor-symbol NO_TCL:
a) click Project -> Properties, navigate to the C/C++-folder and choose "Preprocessor"
b) in the field that says "Preprocessor definitions" add NO_TCL to the existing string, separated by a semicolon
c) under "Code Generation" for "Runtime Library" make sure to pick static linking. /MTd (release) or /MTd (debug)

Make a .DEF file

9. A .def file should be placed in the project directory. Get the def file by downloading the zipped sqlite DLL file under the "Precompiled Binaries For Windows" in the download page.

10. Add the sqlite[3].def file to the project.

11. Under Project > Properties navigate to the Linker folder and choose "Input". In the field that says "Module Definition File" type sqlite[3].def. NOTE: You have to do this twice, once for the Debug configuration and once for the Release configuration.

12. Compile!

The next 2 steps maybe be required by some. I was able to build the DLL and produce a .lib file only following the above 12 steps. for VS 2005.

11.a) In order to build the lib file so that an application can link against the sqlite[3].dll you will need to add a step to the post-build event. Right click on Project, select Properties, expand Build Events and type "LIB /DEF:<path>\sqlite[3].def" into the Command line field, both for debug and release configurations, where <path> is the location to the file sqlite[3].def.

11.b) To compile 3.3.7(this may apply to other versions too), I had to do this extra step:
Add the project directory to the include path, here's how to do it in details:
Under Project > Properties navigate to the C/C++ folder and choose "General", In the field "Additional Include Directories" type "."(a single dot, which is the current directory) NOTE: You have to do this twice, once for the Debug configuration and once for the Release configuration.

<h3><u>Adding a link to a working VS Solution.</u></h3>

Visit the page: The second send of links has a dll compiled using Visual Studios and a link to sqlite3 source plus solution file.

VS Solution

How to make the SQLITE.EXE command-line utility

There are some slight changes if you wanted to build the sqlite.exe command-line utility, instead of the DLL. To do that, when you're creating the project and you get to the "Win32 Application Wizard", choose "Console Application" instead of "DLL". Then, when you are adding files to the project, also add shell.c. Finally, don't include the .DEF file.

The sqllite def for version 2 is.

  EXPORTS
   sqlite_open
   sqlite_close
   sqlite_exec
   sqlite_last_insert_rowid
   sqlite_error_string
   sqlite_interrupt
   sqlite_complete
   sqlite_busy_handler
   sqlite_busy_timeout
   sqlite_get_table
   sqlite_free_table
   sqlite_mprintf
   sqlite_vmprintf
   sqlite_exec_printf
   sqlite_exec_vprintf
   sqlite_get_table_printf
   sqlite_get_table_vprintf
   sqlite_freemem
   sqlite_libversion
   sqlite_libencoding
   sqlite_changes
   sqlite_create_function
   sqlite_create_aggregate
   sqlite_function_type
   sqlite_user_data
   sqlite_aggregate_context
   sqlite_aggregate_count
   sqlite_set_result_string
   sqlite_set_result_int
   sqlite_set_result_double
   sqlite_set_result_error
   sqliteMalloc
   sqliteFree
   sqliteRealloc
   sqlite_set_authorizer
   sqlite_trace
   sqlite_compile
   sqlite_step
   sqlite_finalize
   sqlite_progress_handler
   sqlite_reset
   sqlite_last_statement_changes