sqlite — компилятор C ++, считывающий данные из файла .db, хранящегося в .lib

У меня есть приличное понимание C #. Меня попросили сделать SDK вместе с нашей программой, чтобы клиент мог создать свой собственный пользовательский интерфейс, используя наши функции. В C # я сделал это, добавив DLL. Мне пришлось использовать файл базы данных (.db) для хранения команд, и все прошло успешно. Теперь меня попросили сделать то же самое в C ++. Я очень плохо знаком с C ++. Но вот что я прочитал из MSDN и сделал:

  1. Я создал проект библиотеки.
  2. Добавлена ​​база данных в виде файла ресурсов, заголовочного файла sqlite3 и библиотечного файла (я получил, дав команду lib в командной строке).
  3. Создал заголовочный файл с функциями и записал в .cpp файл со всеми определениями функций.
  4. Построил его и получил файл библиотеки из команды lib.

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

error C2059: syntax error : '<'
error C2018: unknown character '0x7'
error C2018: unknown character '0x60'
error C2018: unknown character '0x7'
error C2018: unknown character '0x2'
error C2018: unknown character '0x1e'
error C2018: unknown character '0x18'

Я некоторое время боролся с этим, когда вспомнил, что эти ошибки были такими же, как и несколько дней назад. Я на самом деле задал вопрос в SE и получил ответ (Ошибка при включении файла базы данных в проект C ++).

Поэтому я сделал вывод, что компилятор пытается прочитать файл базы данных, сохраненный в файле библиотеки, и, следовательно, я получил эти ошибки.

Теперь у меня есть три вопроса:

  1. Я прав? Пытается ли компилятор прочитать файл .db, хранящийся в файле .lib?
  2. Если да, может кто-нибудь дать какие-либо предложения
  3. Кроме того, если вы думаете, что я неправ, я был бы признателен за любые другие объяснения.

Я использую Visual Express C ++ 2010. Я использовал командную строку, которая поставляется вместе с Visual Studio, для создания файла .lib. Моя ссылка для создания .lib файла была https://msdn.microsoft.com/en-us/library/ms235627.aspx#BKMK_CreateAppToRefTheLib.

-2

Решение

Файл базы данных не может быть сохранен в статическом файле библиотеки для развертывания. Потому что компилятор ВСЕГДА читает содержимое библиотеки. Это показывает, что он читает это, когда вы строите программу.

Так что делать, если вам нужно выдать базу данных с вашим SDK? У меня есть два решения:

  1. Добавьте файл базы данных с вашими .lib-файлом и .h-файлом и просто выведите глоссарий команд с помощью SDK. (Я, однако, не советую это)
  2. Измените расширение файла базы данных и напишите методы в .lib, вызывая базу данных, используя функции sqlite3. Дайте пользователю глоссарий функций, которые вы написали с маскированными именами функций, чтобы они не знали, находится ли он в базе данных. Файл базы данных не должен иметь расширение .db, чтобы sqlite мог его распознать. Просто дайте sqlite_open и включите имя базы данных как database.bhjbkhj (где bhjbkhj — это произвольное расширение, которое вы написали). Sqlite очень хорош в этом отношении при распознавании баз данных.

Итак, поехали. Проблема не может быть решена. Но две альтернативы.

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector