Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

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

11.08.2014, 23:01. Просмотров 2014. Ответов 10
Метки нет (Все метки)

Помогите новичку!
Пишу консольную программу под 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 определил раньше - ошибку не вызывает.

...мне бы хотя-бы запустить...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2014, 23:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Начать работать с SQLite (C++):

Как начать работать программируя на С/С++? - C++
Вот заметил, что джуниоры в С/С++ никому не нужны, в отличие от джавы, например. У меня появилась пара вопросов: 1) Что делать, после...

Как начать работать в Visual C++ 2010 - C++
Здравствуйте. Никак не могу понять как нужно работать в Visual C++ 2010. Я только начинающий. Делаю следующее. Создаю проект: «Файл» →...

Какие темы нужно знать, чтобы начать работать с DirectX - C++
День добрый! Прочитал уже почти 3 книги "для начинающих", множество статей, немного умею работать с WinAPI, пробую сам писать простые...

Где можно скачать программу, чтобы начать учиться работать в С++? - C++
собственно ногами не пинать...вопрос полного нуля в этой области , но подскажите где можно скачать программу для того что бы начать учиться...

Хачю начать изучать С++ посоветуйте с чево начать - C++
Хачю начать изучать С++ посоветуйте с чево начать

Хочу начать учить C++ с чего начать? - C++
Посоветуйте действительно хорошие книги/видео уроки по этому языку. За спиной у меня нет других языков программирования. Еще хочу задать...

10
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
11.08.2014, 23:11 #2
Цитата Сообщение от Tester64 Посмотреть сообщение
Что она означает?
Означает, что компоновщик не может найти символ.
Цитата Сообщение от Tester64 Посмотреть сообщение
И как исправить?
Добавить опцию линковки с библиотекой sqlite.
0
dr.curse
389 / 345 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
11.08.2014, 23:11 #3
Tester64, библиотеки тоже подключать надо
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
12.08.2014, 00:07  [ТС] #4
Цитата Сообщение от dr.curse Посмотреть сообщение
библиотеки тоже подключать надо
Цитата Сообщение от Vourhey Посмотреть сообщение
Добавить опцию линковки с библиотекой sqlite.
а как? После делфей привык - библиотека подключится сама к ехе-файлу при старте программы. Причем можно подключать динамически (как плагины). Достаточно дать описать функцию из библиотеки с указанием рядом с функцией из какого длл файла брать... На этапе компиляции ничего больше не требовалось. Причем файл успешно вылетал с ошибкой после запуска не найдя длл.
0
BlackIce
310 / 172 / 64
Регистрация: 18.01.2014
Сообщений: 387
12.08.2014, 00:12 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Tester64 Посмотреть сообщение
Компилирую этим (BAT-файлом):
Почему BAT, а не Makefile?

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

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

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

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

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

Не по теме:

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

1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
12.08.2014, 01:39  [ТС] #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. Но думаю, что сейчас, пока вы только экспериментируете -- это не принципиально.
насколько я понял надо просто выкинуть с-файлы... но если можете примерчик, прошу!!!
0
BlackIce
12.08.2014, 01:49
  #9

Не по теме:

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

0
BlackIce
310 / 172 / 64
Регистрация: 18.01.2014
Сообщений: 387
12.08.2014, 02:30 #10
Цитата Сообщение от Tester64 Посмотреть сообщение
но если можете примерчик, прошу
sqlite собран,
как статическая библиотека: sqlite-test-lib.zip
как динамическая библиотека: sqlite-test-dll.zip
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
12.08.2014, 03:54  [ТС] #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 СИЛЬНО ограничен... ОЧЕНЬ сильно... пока откладываю за ненадобностью, но попробую самому сделать аналог ускорителя перекомпиляции... жаль...
0
12.08.2014, 03:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2014, 03:54
Привет! Вот еще темы с ответами:

Работа с SQLite - C++
Хочу начать работать с SQLite, вот попробовал, но появилась ошибка, подскажите в чем проблема и как исправить, или посоветуйте другие...

Vector allocator SQLite - C++
Гуру, помогите новичку! Столкнулся с проблемой, и даже не понимаю в чем она... Надо: сделать список(вектор) для хранения ссылок...

Неправильная кодировка в SQLite - C++
Помогите, не правильная кодировка когда я с помощью SQLite получаю данные из файла "Login Data" (Chrome). LVITEM lvi; lvi.mask =...

Vector и Select SQLite - C++
Здравствуйте. Столкнулся с двумя проблемами и не знаю в чём дело. Есть метод класса: std::vector< std::vector<char*> >...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru