Модераторы: Alexeis

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование SQLite, Помогите скомпилировать под WIN CE 
V
    Опции темы
Brodyaga
Дата 22.12.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Всем доброго времени суток! Решил использовать в качестве БД для телефона SQLite... Но под WinCE никак скомпилить не могу... Исходники качал отсюда. При компиляции выдаёт ошибки типа...:
Код

Error    65    error C2065: 'FILENAME_MAX' : undeclared identifier
Error    66    error C2057: expected constant expression
Error    67    error C2229: struct 'callback_data' has an illegal zero-sized array
Error    72    fatal error C1083: Cannot open include file: 'tcl.h': No such file or directory


Не понимаю.. как эти исходники под Win CE, если даже константу FILENAME_MAX он найти не может?! (в Win32 она определена в stdio.h)

Так же нашёл в инете статейку.. и по ней тоже пробовал.. Скомпилилось вроде всё норм, но при подключению полученной lib'ы к проекту и вызове функций также сыплюца ошибки о том, что не определенна какаято переменная, нашёл в исходниках с помощью каких макросов она создаёца, но вот в мкрос надо передать значению её.. а где его взять?! вообщем уже совсем запутался.. Помогите пожалуйста! ОЧЕНЬ НАДО! :(

PM MAIL   Вверх
Alexeis
Дата 22.12.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Brodyaga, насколько я помню для компиляции исходников под CE нужен gcc или еще какой-то гнутый компилятор. Там часть сорцов генериться на лету при помощи make файла. Но у них есть еще скрытые сорцы уже готовые. Я качал такой пак и компилировал его в Билдере. Получилась вполне рабочая Dll ина. Для CE есть нюансы. Функция CreateFile работает не с файлом во флеше, а с его образом в ОЗУ, т.о. в памяти будет висеть вся база, а сам движок ничуть не ответственен за то чтобы сохранять базу во флеш. Потому ИМХО, нужно переписать файловый интерфейс под работу с конкретной флеш памятью. Для этого нужно передать в конфигурационную функцию структуру с указателями на функции для работы с файлами. После этого перекомпилировать. Сейчас под рукой нет исходников, на работе остались.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Brodyaga
Дата 22.12.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Спасибо за ответ! Завтра скинуть сможете??? На работе посмотрю, поковыряю!
PM MAIL   Вверх
t_rex
Дата 23.12.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 11.10.2006
Где: Украина, г. Запор ожье

Репутация: 1
Всего: 7



Цитата

Скомпилилось вроде всё норм, но при подключению полученной lib'ы к проекту и вызове функций также сыплюца ошибки о том, что не определенна какаято переменная, нашёл в исходниках с помощью каких макросов она создаёца, но вот в мкрос надо передать значению её.. а где его взять?!

Ты б хоть build log выложил, а то телепаты в отпуске, а мы тут без них хз что там за проблема.
--------------------
Жизнь не MultiEdit. Undo не сделаешьКросс-платформенное программирование с wxWidgetsБлог о программировании для мобильных устройтсвGoogle Android для программистов и пользователей
PM MAIL WWW ICQ Skype GTalk   Вверх
Alexeis
Дата 23.12.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Цитата(Brodyaga @  22.12.2008,  20:09 Найти цитируемый пост)
Завтра скинуть сможете??? На работе посмотрю, поковыряю! 

    Значит ссылка такая 
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" 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Brodyaga
Дата 23.12.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

    Значит ссылка такая 
http://www.sqlite.org/sqlite-source-3_6_7.zip


Дык для Win CE же в другом месте лежит... тута или я ошибаюсь и надо всётаки брать то, что вы указали??
PM MAIL   Вверх
Alexeis
Дата 23.12.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Цитата(Brodyaga @  23.12.2008,  14:57 Найти цитируемый пост)
Дык для Win CE же в другом месте лежит... тута 

  Не знаю даже, они какие-то урезанные и не очень свежие "sqlite-wince-3.3.5". 

Мне кажется если адаптировать, то лучше самые свежие.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Brodyaga
Дата 23.12.2008, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



t_rex,
Цитата

Ты б хоть build log выложил, а то телепаты в отпуске, а мы тут без них хз что там за проблема.


Извините.. я думал они вернулись из отпуска.. ну да ладно, ошибки вот такого плана
Код

Error    1    error C2065: 'sqlite3_api' : undeclared identifier
Error    2    error C2227: left of '->open' must point to class/struct/union/generic typec


Это так он ругаеца на вызов функции sqlite3_open.. Заходим в исходный файл и видим, что эта фунция не что иное как...
Код

#define sqlite3_open                   sqlite3_api->open


А вот те самые макросы из исходников, которые создают эту переменную:
Код

#define SQLITE_EXTENSION_INIT1     const sqlite3_api_routines *sqlite3_api = 0;
#define SQLITE_EXTENSION_INIT2(v)  sqlite3_api = v;


А вот где взять это загадочное v... вот в чём вопрос... Напоминаю, это способ представленный в этой статье. Потому что в сущности то мне под Win Mobile нужно.



Это сообщение отредактировал(а) Brodyaga - 23.12.2008, 22:03
PM MAIL   Вверх
Alexeis
Дата 23.12.2008, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Brodyaga, думаю дело в том что не определены некоторые дефайны, от того у компилятора проблемы с именами.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
t_rex
Дата 24.12.2008, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 11.10.2006
Где: Украина, г. Запор ожье

Репутация: 1
Всего: 7



Да, здесь, похоже, проблема именно в директивах компилятора. Думаю, проще всего было бы открыть исходник SQLite Amalgamation в Visual Studio и посмотреть почему этот код не включается в сборку, там должны быть условия в коде вида или #ifdef _SOME_MACRO или #if defined(_SOME_MACRO) и опытным путем определить какие из них нужно подобавлять в C/C++ -> Preprocessor
--------------------
Жизнь не MultiEdit. Undo не сделаешьКросс-платформенное программирование с wxWidgetsБлог о программировании для мобильных устройтсвGoogle Android для программистов и пользователей
PM MAIL WWW ICQ Skype GTalk   Вверх
Brodyaga
Дата 24.12.2008, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Цитата

Brodyaga, думаю дело в том что не определены некоторые дефайны, от того у компилятора проблемы с именами.


Цитата

Да, здесь, похоже, проблема именно в директивах компилятора. Думаю, проще всего было бы открыть исходник SQLite Amalgamation в Visual Studio и посмотреть почему этот код не включается в сборку, там должны быть условия в коде вида или #ifdef _SOME_MACRO или #if defined(_SOME_MACRO) и опытным путем определить какие из них нужно подобавлять в C/C++ -> Preprocessor


Есть в коде условия такого вида!

Код

#ifndef SQLITE_CORE
...
#define sqlite3_open                   sqlite3_api->open
...
#endif /* SQLITE_CORE */


Но не в этом суть... причом тут дефайны это же макросы которые нужно вызывать самому... Например если я в коде вызываю макрос
Код

SQLITE_EXTENSION_INIT1;

,то описанные ошибки пропадают... но при обращениям к функциям выскакивают другие так как этот макрос лишь инициализирует переменную sqlite3_api присваивая ей 0, а не реальное значение... Реальное же значение передаётся макросу 
Код

SQLITE_EXTENSION_INIT2(v);

Но вот где его взять(реальное значение в смысле)?!? Если бы я смог инициализировать переменную sqlite3_api, то и дефайны типа...
Код

#define sqlite3_open                   sqlite3_api->open

заработали бы...

Но вот как это сделать...???
PM MAIL   Вверх
Alexeis
Дата 24.12.2008, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Цитата(Brodyaga @  24.12.2008,  07:54 Найти цитируемый пост)
Но не в этом суть... причом тут дефайны это же макросы которые нужно вызывать самому... Например если я в коде вызываю макрос

  Не всегда, есть дефайны условной компиляции, которые определяют какой код будет компилироваться, а какой нет. Функция с одним т  тем же именем и параметрами может иметь несколько реализаций, зависящих от возможности ОС. Например если нет возможности синхронизировать доступ к файлу на диске, то часть кода ответственную за этот механизм можно исключить из проекта. В проекте SQLLite есть набор фич, которые можно исключить из работы и тем самым упростить движок. 
  Если не компиляться те исходники советую взять полные, те что я указал. У меня они скомпилировались правильно, может и у вас заработают без ошибок. В них тоже есть директивы специально для CE. И из них можно скомпилировать версию для CE.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Brodyaga
Дата 24.12.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



В тех исходниках, что лежат на официальном сайте компилятор не может найти tcl.h и io.h. Первый я нашёл в инете, а второй для WinCE хз где... ПОделитесь если есть? И что вы из этих исходников делали? lib или dll ?
PM MAIL   Вверх
Alexeis
Дата 24.12.2008, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



Цитата(Brodyaga @  24.12.2008,  12:07 Найти цитируемый пост)
В тех исходниках, что лежат на официальном сайте компилятор не может найти tcl.h и io.h. Первый я нашёл в инете, а второй для WinCE хз где... ПОделитесь если есть? И что вы из этих исходников делали? lib или dll ? 

  Я делал Dll, но не для CE. Думаю его можно сделать самому по аналогии с виндовым вариантом или вообще взять от обычного видового, там же основные функции совпадают, тока в других Dll инах. Напильник в руки smile и...


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Brodyaga
Дата 24.12.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 599
Регистрация: 19.1.2008

Репутация: нет
Всего: 2



Тоесть вы вручную подписывали к функциям export чтоли и т.д.??? так как в исходниках этого нет помоему...
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование мобильных устройств"
Alexeis

Раздел посвящен программированию мобильных устройств.

Все остальные вопросы по мобильным устройствам (КПК, смартфоны, телефоны, фотоаппараты и т.п),
не имеющие отношения к программированию, просьба размещать в разделе КПК, смартфоны, мобильники

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Платформы Windows Mobile и Windows Embedded | Следующая тема »


 




[ Время генерации скрипта: 0.1070 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.