C++. How use SQLite in Windows Forms

В свое время знакомство с движком SQLite ограничилось разработками консольных приложений. Но вот настало время и более интересному использованию: интеграция в проекты сопряженных с созданием UI с помощью Windows Forms. Как и ранее я буду работать со средой разработки Microsoft Visual C++ 2008 Express Edition.
В отличии от консольных приложений все попытки связать SQLite с такого рода проектами были безуспешными. Может конечно у Вас получится, буду очень благодарен за письмо в мой адрес с Вашим рецептом. Приготовить по рецепту с официального сайта (The SQLite Amalgamation) также не удалось.

Из логов компилятора:
  • Command line error D8045 : cannot compile C file '.\sqlite3.c' with the /clr option
  • error LNK2019: unresolved external symbol _sqlite3_exec referenced in function _main
  • error LNK2019: unresolved external symbol _sqlite3_open referenced in function _main
Вопрос - почему? Причем этот вопрос судя по результатам поиска в "инете" не единичный. Как выяснилось чуть погодя проблема была связана с тем, что по сути своей Windows Forms является частью Microsoft .NET Framework. Внутри которой Windows Forms реализуется в рамках пространства имён System.Windows.Forms. В связи с этими нюансами и просходили всякие неприятности на моей кухне. И под конец на глаза попалась книжечка Using SQLite. Jay A. Kreibich, где сказано:


Building


There are a number of different ways to build SQLite, depending on what you’re trying


to build and where you would like it installed. If you are trying to integrate the SQLite

core into a host application, the easiest way to do that is to simply copy


sqlite3.c and


sqlite3.h
 

into your application’s source directory. If you’re using an IDE, the sqlite3.c


file can simply be added to your application’s project file and configured with the proper

search paths and build directives. If you want to build a custom version of the SQLite

library or


sqlite3 utility, it is also easy to do that by hand.


All of the SQLite source is written in C. It cannot be compiled by a C++ compiler. If

you’re getting errors related to structure definitions, chances are you’re using a C++

compiler.


Вопрос был снят. Получается, что нужно адаптировать SQLite библиотеку под .NET Framework. Для этого на официальном сайте есть ссылка на так называемый ADO.NET adapter for SQLite - System.Data.SQLite. 

Среди этих ресурсов (например - здесь) можно встретить вот такой ролик, который демонстирует сие адаптер - так сказать - in action. 

 

P.S.: For a CLR/.NET/WinForms projects you should use System.Data.SQLite.
Всем удачи :)