Форум программистов, компьютерный форум CyberForum.ru

Начать работать с SQLite - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Tester64
394 / 355 / 43
Регистрация: 22.05.2013
Сообщений: 2,460
11.08.2014, 23:01     Начать работать с SQLite #1
Помогите новичку!
Пишу консольную программу под Win на С++
Компилирую этим (BAT-файлом):
Bash
1
g++.exe %prj%_main_win.cpp %prj%src\*.cpp -o %bin% -I%prj% -std=c++11
По советам на хабре (http://habrahabr.ru/post/149390/) скачал *.Н файл, кинул в папку с src\*.cpp и пытаюсь подключить к программе:

C++
1
2
3
#include "src\sqlite3.h"
...
if( sqlite3_open("my_cosy_database.dblite", &db) ) ...
компиляция выдает ошибку:
Bash
1
2
C:\Users\User\AppData\Local\Temp\cciDqmBA.o:_win.cpp: (.text+0xdb2): undefined reference to `sqlite3_open'
collect2.exe: error: ld returned 1 exit status
Что она означает? И как исправить?

Раньше с SQLite работал в Делфи - подключалось легко, основы знаю. Качал *.Н с официального сайта. Рядом с ЕХЕ положил ДЛЛ (от другого проекта). Проверил - в Н-файле функция sqlite3_open есть и с теми-же параметрами. db определил раньше - ошибку не вызывает.

...мне бы хотя-бы запустить...
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
11.08.2014, 23:11     Начать работать с SQLite #2
Цитата Сообщение от Tester64 Посмотреть сообщение
Что она означает?
Означает, что компоновщик не может найти символ.
Цитата Сообщение от Tester64 Посмотреть сообщение
И как исправить?
Добавить опцию линковки с библиотекой sqlite.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
11.08.2014, 23:11     Начать работать с SQLite #3
Tester64, библиотеки тоже подключать надо
Tester64
394 / 355 / 43
Регистрация: 22.05.2013
Сообщений: 2,460
12.08.2014, 00:07  [ТС]     Начать работать с SQLite #4
Цитата Сообщение от dr.curse Посмотреть сообщение
библиотеки тоже подключать надо
Цитата Сообщение от Vourhey Посмотреть сообщение
Добавить опцию линковки с библиотекой sqlite.
а как? После делфей привык - библиотека подключится сама к ехе-файлу при старте программы. Причем можно подключать динамически (как плагины). Достаточно дать описать функцию из библиотеки с указанием рядом с функцией из какого длл файла брать... На этапе компиляции ничего больше не требовалось. Причем файл успешно вылетал с ошибкой после запуска не найдя длл.
BlackIce
309 / 171 / 64
Регистрация: 18.01.2014
Сообщений: 387
12.08.2014, 00:12     Начать работать с SQLite #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Tester64 Посмотреть сообщение
Компилирую этим (BAT-файлом):
Почему BAT, а не Makefile?

Цитата Сообщение от Vourhey Посмотреть сообщение
Добавить опцию линковки с библиотекой sqlite.
Не обязательно, можно вкомпилить sqlite прямо в свою прогу.

Качаем http://www.sqlite.org/snapshot/sqlit...1408081749.zip , добавляем в проект sqlite3.c и все будет работать.

ТСу, если вам так удобно работать BAT, вот небольшой пример: sqlite-test.zip. Изучите и подгоните под свой BAT.
Но рекомендую таки работать с какой-нибудь более совершенной системой сборки проектов или создать проект в какой-нибудь IDE (к примеру в Eclipse).

Если хотите sqlite3.dll, то могу сделать примерчик с dll. Но думаю, что сейчас, пока вы только экспериментируете -- это не принципиально.
BlackIce
309 / 171 / 64
Регистрация: 18.01.2014
Сообщений: 387
12.08.2014, 00:18     Начать работать с SQLite #6
http://www.sqlite.org/snapshot/sqlit...1408081749.zip -- пререлиз
Лучше скачать и работать с http://www.sqlite.org/2014/sqlite-am...on-3080500.zip
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
12.08.2014, 01:14     Начать работать с SQLite #7
Цитата Сообщение от Tester64 Посмотреть сообщение
а как?
Опция -l

Добавлено через 52 минуты

Не по теме:

Цитата Сообщение от BlackIce Посмотреть сообщение
Не обязательно, можно вкомпилить sqlite прямо в свою прогу.
Америку открыл... Для решения конкретной проблемы с undefined нужно именно добавить опцию линковки. А куда, что и как он хочет собирать - дело топикстартера.

Tester64
394 / 355 / 43
Регистрация: 22.05.2013
Сообщений: 2,460
12.08.2014, 01:39  [ТС]     Начать работать с SQLite #8
Цитата Сообщение от BlackIce Посмотреть сообщение
ТСу, если вам так удобно работать BAT, вот небольшой пример: sqlite-test.zip. Изучите и подгоните под свой BAT.
Но рекомендую таки работать с какой-нибудь более совершенной системой сборки проектов или создать проект в какой-нибудь IDE (к примеру в Eclipse).
Если хотите sqlite3.dll, то могу сделать примерчик с dll. Но думаю, что сейчас, пока вы только экспериментируете -- это не принципиально.
За пример большое спасибо! Пока хватит! Что-то получилось... откомилилось, запустилось... теперь буду "пошагово" изучать...

Я действительно только учусь... Нужно кое-что написать под NDK андроида, а там жутко медленные компиляторы и запуск тестов. До 35-40 секунд приходится ждать что-бы увидеть что получилось на устройстве (10-15 секунд компиляция с++, 10-15 компиляция apk в яве и 10-15 для установки на устройстве и запуска). Чему-нибудь научиться не реально! Поэтому работаю в блокноте (notepad++) и запускаю батник для вывода результата. Пока жду до запуска 5-8 секунд (надеюсь ускорить). Для учебы - самое то! Написал батников для тестов, работа с цветным текстом в консоли... Шедевр... Написал уже свою утилиту типа "pause", но с таймером закрытия (могу поделиться/похвастаться) хотя немного дико - буд-то на 20 лет назад в программировании вернулся... Легко тестируется результатат в андроиде - все выношу во внешние мультиплатформенные классы и 2 бат-файла инсталятора - под Win и под NDK...

С самыми основами с++ разобрался, осталось (по плану) SQLite изучить и можно медленно делать свой проект, изучая по ходу тонкости с++...

Нехватает только авто-прыжка на линию с ошибкой в коде, но скорость дороже. И эклипс пощупал еще для андроида - было очень неприятно - глючная штука! По крайней мере под андроид-яву и под Win.

А для чего нужен Makefile? где-то встречал, но необходимости не понял...

Добавлено через 17 минут
УРА! Заработало! успел подправить исходники под понятный результат...
Цитата Сообщение от BlackIce Посмотреть сообщение
Если хотите sqlite3.dll, то могу сделать примерчик с dll. Но думаю, что сейчас, пока вы только экспериментируете -- это не принципиально.
насколько я понял надо просто выкинуть с-файлы... но если можете примерчик, прошу!!!
BlackIce
12.08.2014, 01:49
  #9

Не по теме:

Цитата Сообщение от Tester64 Посмотреть сообщение
А для чего нужен Makefile? где-то встречал, но необходимости не понял...
Стандартная утилита для сборки проектов. В общем, то что делаете на BAT, давно уже сделано (ну может быть кроме цветного вывода, но и это не проблема).
Наверно, лучше почитать: https://ru.wikipedia.org/wiki/Make http://habrahabr.ru/post/155201/
Еще make отслеживает изменения в файлах, т.е. компилироваться будут только те исходные файлы, которые необходимо и достаточно. Опция многопоточной сборки может ускорить сборку проекта на процессорах с несколькими ядрами.

BlackIce
309 / 171 / 64
Регистрация: 18.01.2014
Сообщений: 387
12.08.2014, 02:30     Начать работать с SQLite #10
Цитата Сообщение от Tester64 Посмотреть сообщение
но если можете примерчик, прошу
sqlite собран,
как статическая библиотека: sqlite-test-lib.zip
как динамическая библиотека: sqlite-test-dll.zip
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2014, 03:54     Начать работать с SQLite
Еще ссылки по теме:

Vector и Select SQLite C++
Хачю начать изучать С++ посоветуйте с чево начать C++
C++ Работа с SQLite

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tester64
394 / 355 / 43
Регистрация: 22.05.2013
Сообщений: 2,460
12.08.2014, 03:54  [ТС]     Начать работать с SQLite #11
Цитата Сообщение от BlackIce Посмотреть сообщение
как статическая библиотека: sqlite-test-lib.zip
как динамическая библиотека: sqlite-test-dll.zip
Спасибо, попробую...

Цитата Сообщение от BlackIce Посмотреть сообщение
Стандартная утилита для сборки проектов. В общем, то что делаете на BAT, давно уже сделано (ну может быть кроме цветного вывода, но и это не проблема).
Наверно, лучше почитать: https://ru.wikipedia.org/wiki/Make http://habrahabr.ru/post/155201/
Еще make отслеживает изменения в файлах, т.е. компилироваться будут только те исходные файлы, которые необходимо и достаточно. Опция многопоточной сборки может ускорить сборку проекта на процессорах с несколькими ядрами.
Вы вынесли мне могз! Даже не догадывался... о подобной технологии (уже подумывал самому написать налог "умного" компилятора изменненых)! Пока запустить не получилось, но если получится... По многоядерности пока ничего не нашел. Директива -j на стандартном виндовом не работает - или встроена (что логично - сколько ядер система сама знает) или нужна другая сборка мейк-а (из другого пакета)

А можно как-нибудь генерировать makefile? Если проект большой(100 файлов), зависимости тяжело остлеживать. Но комплилятор (по идее) должен сам получать цепочки зависимостей при полной компиляци (*.cpp)...

Добавлено через 53 минуты
Цитата Сообщение от Tester64 Посмотреть сообщение
Стандартная утилита для сборки проектов. В общем, то что делаете на BAT, давно уже сделано (ну может быть кроме цветного вывода, но и это не проблема).
Почитал глубже... Не так все просто... мейкфайл не мультиплатформенный! И под Win СИЛЬНО ограничен... ОЧЕНЬ сильно... пока откладываю за ненадобностью, но попробую самому сделать аналог ускорителя перекомпиляции... жаль...
Yandex
Объявления
12.08.2014, 03:54     Начать работать с SQLite
Ответ Создать тему
Опции темы

Текущее время: 02:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru