| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Платформы Windows Mobile и Windows Embedded > Использование SQLite |
| Автор: Brodyaga 22.12.2008, 20:44 | ||
Всем доброго времени суток! Решил использовать в качестве БД для телефона SQLite... Но под WinCE никак скомпилить не могу... Исходники качал http://sourceforge.net/project/showfiles.php?group_id=88393. При компиляции выдаёт ошибки типа...:
Не понимаю.. как эти исходники под Win CE, если даже константу FILENAME_MAX он найти не может?! (в Win32 она определена в stdio.h) Так же нашёл в инете http://mobile-developer.ru/database/rabota-s-bazami-dannyh-sobiraem-sqlite-dlya-windows-mobile/.. и по ней тоже пробовал.. Скомпилилось вроде всё норм, но при подключению полученной lib'ы к проекту и вызове функций также сыплюца ошибки о том, что не определенна какаято переменная, нашёл в исходниках с помощью каких макросов она создаёца, но вот в мкрос надо передать значению её.. а где его взять?! вообщем уже совсем запутался.. Помогите пожалуйста! ОЧЕНЬ НАДО! :( |
| Автор: Alexeis 22.12.2008, 20:57 |
| Brodyaga, насколько я помню для компиляции исходников под CE нужен gcc или еще какой-то гнутый компилятор. Там часть сорцов генериться на лету при помощи make файла. Но у них есть еще скрытые сорцы уже готовые. Я качал такой пак и компилировал его в Билдере. Получилась вполне рабочая Dll ина. Для CE есть нюансы. Функция CreateFile работает не с файлом во флеше, а с его образом в ОЗУ, т.о. в памяти будет висеть вся база, а сам движок ничуть не ответственен за то чтобы сохранять базу во флеш. Потому ИМХО, нужно переписать файловый интерфейс под работу с конкретной флеш памятью. Для этого нужно передать в конфигурационную функцию структуру с указателями на функции для работы с файлами. После этого перекомпилировать. Сейчас под рукой нет исходников, на работе остались. |
| Автор: Brodyaga 22.12.2008, 21:09 |
| Спасибо за ответ! Завтра скинуть сможете??? На работе посмотрю, поковыряю! |
| Автор: t_rex 23.12.2008, 14:18 | ||
Ты б хоть build log выложил, а то телепаты в отпуске, а мы тут без них хз что там за проблема. |
| Автор: Alexeis 23.12.2008, 14:31 |
Значит ссылка такая http://www.sqlite.org/sqlite-source-3_6_7.zip На момент скачки версия может измениться, но архив продолжают заливать, потому если файл не найден попробуйте другое имя в формате http://www.sqlite.org/sqlite-source-x_y_z.zip т.е. 3.67 -> 3_6_7 . 4я цифра в имени архива не участвует. Добавлено через 5 минут и 15 секунд Если, в последствии будет желание открыть эту базу на PC, то удобно использовать odbc драйвер. Например при помощи него в билдере можно приконектиться к базе используя ADO. http://www.ch-werner.de/sqliteodbc/sqliteodbc.exe (http://www.ch-werner.de/sqliteodbc/) Добавлено через 9 минут и 46 секунд Хотя не, на счет того что скрыта ссылка пожалуй я не прав, нашел таки ее на http://www.sqlite.org/download.html Последняя ссылка в разделе "Source Code" |
| Автор: Brodyaga 23.12.2008, 15:57 | ||
Дык для Win CE же в другом месте лежит... http://sqlite-wince.sourceforge.net/ или я ошибаюсь и надо всётаки брать то, что вы указали?? |
| Автор: Alexeis 23.12.2008, 17:00 |
Не знаю даже, они какие-то урезанные и не очень свежие "sqlite-wince-3.3.5". Мне кажется если адаптировать, то лучше самые свежие. |
| Автор: Brodyaga 23.12.2008, 22:02 | ||||||||
t_rex,
Извините.. я думал они вернулись из отпуска.. ну да ладно, ошибки вот такого плана
Это так он ругаеца на вызов функции sqlite3_open.. Заходим в исходный файл и видим, что эта фунция не что иное как...
А вот те самые макросы из исходников, которые создают эту переменную:
А вот где взять это загадочное v... вот в чём вопрос... Напоминаю, это способ представленный в http://mobile-developer.ru/database/rabota-s-bazami-dannyh-sobiraem-sqlite-dlya-windows-mobile/ статье. Потому что в сущности то мне под Win Mobile нужно. |
| Автор: Alexeis 23.12.2008, 22:33 |
| Brodyaga, думаю дело в том что не определены некоторые дефайны, от того у компилятора проблемы с именами. |
| Автор: t_rex 24.12.2008, 00:30 |
| Да, здесь, похоже, проблема именно в директивах компилятора. Думаю, проще всего было бы открыть исходник SQLite Amalgamation в Visual Studio и посмотреть почему этот код не включается в сборку, там должны быть условия в коде вида или #ifdef _SOME_MACRO или #if defined(_SOME_MACRO) и опытным путем определить какие из них нужно подобавлять в C/C++ -> Preprocessor |
| Автор: Brodyaga 24.12.2008, 08:54 | ||||||||||||
Есть в коде условия такого вида!
Но не в этом суть... причом тут дефайны это же макросы которые нужно вызывать самому... Например если я в коде вызываю макрос
,то описанные ошибки пропадают... но при обращениям к функциям выскакивают другие так как этот макрос лишь инициализирует переменную sqlite3_api присваивая ей 0, а не реальное значение... Реальное же значение передаётся макросу
Но вот где его взять(реальное значение в смысле)?!? Если бы я смог инициализировать переменную sqlite3_api, то и дефайны типа...
заработали бы... Но вот как это сделать...??? |
| Автор: Brodyaga 24.12.2008, 13:07 |
| В тех исходниках, что лежат на официальном сайте компилятор не может найти tcl.h и io.h. Первый я нашёл в инете, а второй для WinCE хз где... ПОделитесь если есть? И что вы из этих исходников делали? lib или dll ? |
| Автор: Alexeis 24.12.2008, 14:03 | ||
Я делал Dll, но не для CE. Думаю его можно сделать самому по аналогии с виндовым вариантом или вообще взять от обычного видового, там же основные функции совпадают, тока в других Dll инах. Напильник в руки |
| Автор: Brodyaga 24.12.2008, 15:39 |
| Тоесть вы вручную подписывали к функциям export чтоли и т.д.??? так как в исходниках этого нет помоему... |
| Автор: Alexeis 24.12.2008, 16:05 | ||
Нагуглил def файлик, чуток подправил под обновленную версию. Подключил def к проекту и экспорт готов. |
| Автор: Brodyaga 24.12.2008, 21:43 |
| Эм... Ну может глупый вопрос.. но я не знаю как подключить def файл к проекту, чтобы он экспорт сам сделал.. или как его использовать таким образом, подскажите плиз? |
| Автор: Brodyaga 27.12.2008, 19:49 |
| Ну что никто не знает? :( Срочно надо... |
| Автор: Alexeis 27.12.2008, 21:16 |
| Brodyaga, выходные все таки. Вот тут можно почитать как можно создать def file http://www.sqlite.org/cvstrac/wiki?p=HowToCompile под заголовком "MSVC and SQLite DLL" |
| Автор: Brodyaga 28.12.2008, 09:32 | ||
Так мне не надо создавать деф файл, он у меня есть, мне нужно с помощью него сделать экспорт функции в проекте, чтобы самому к каждой не дописывать экспорт и т.д. Как это сделать? |
| Автор: masterik 29.12.2008, 21:30 |
| Не имею опыта работы на С++ под WinCE, но успешно использую http://sqlite.phxsoftware.com/ для .NET [Compact] Framework. Эта библиотека через P/Invoke использует откомпилированную под WinCE/WinMo dll'ку SQLite. Отлично работает на Windows Mobile и на Windows CE, так что думаю можно просто выдрать отсюда SQLite dll'ку. В наборе имеются исходники как managed так и native библиотек. |
| Автор: Alexeis 31.12.2008, 16:03 | ||
Просто добавить def файл в проект, по нему и будет создан экспорт. |
| Автор: Brodyaga 7.1.2009, 17:48 | ||
При простом добавлении и компиляции с деф файлом никакой экспорт не создаётся (MSVC2005) |
| Автор: Alexeis 7.1.2009, 18:28 | ||
Значит неправильный def файл. Проще было бы скинуть весь проект |
| Автор: APro 9.1.2009, 01:15 |
| Всем привет! Я тут тоже выбираю где бы хранить данные. Начал подумывать про SQLite, вот только я пишу, пока что, на Visual Basic ... Как её туда прикрутить? (чтобы было одним файлом) |
| Автор: Alexeis 9.1.2009, 01:24 |
| APro, ну если барсик поддерживает линковку MS OBJ файлов, то можно. |
| Автор: APro 9.1.2009, 02:04 |
| Alexeis, а может как-то подробнее? |
| Автор: Alexeis 9.1.2009, 03:06 |
| Ну как еще подробнее, билд проекта в С/С++ состоит из 2х частей. 1) компиляция модулей с, cpp в obj файлы 2) сборка экзешника из этих скопилированных файлов исполняемого файла. Obj файл это уже файл с ассемблером, где нереализованны внешние ссылки то бишь неизвесны адреса функций и переменных из других модулей. Линкер этим и занимается что подставляет правильные адреса. Например в Delphi или асме можно линковать "чужие" модули вместе со своими. Линкер разбирается куда какие адреса подставлять. Билдер умеет линковать делфийские компилированные модули. VC умеет линковать любые модули сделанные в его формате. Возможно и в бейсике есть редкие малоиспользуемые директивы для линковки чужих модулей. |
| Автор: APro 9.1.2009, 14:07 |
| а где лучше хранить данные на 60 000 записей? |
| Автор: Alexeis 9.1.2009, 14:15 |
| APro, смотря каких данных и как часто их нужно менять. Если это просто лог, в который инфа добавляется в конец, то хватит и текстового файла, если же нужна вставка данных, поиск, организация связей между данными, то это БД. |
| Автор: t_rex 14.2.2009, 15:53 |
| http://mobile-developer.ru/video-tutorials/video-urok-rabota-s-sqlite-v-windows-mobile/ |