Site icon Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Использование общей библиотеки C ++ с C ++ Builder и TwineCompile

cpptwinecompilespeed

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

В свое время интеграция разных библиотек в проекты C ++ была сложной задачей из-за различий в совместимости между различными компиляторами C ++. Проект, созданный с помощью GCC, будет иметь проблемы с компиляцией на VC ++, а проект, созданный с помощью VC ++, будет иметь проблемы с компиляцией на BCC и т. Д. К счастью, с тех пор мы прошли долгий путь, и компилятор C ++ теперь имеет значительный уровень совместимости с друг друга. 

Использование CLANG в C ++ Builder не является исключением. В то время как классический компилятор часто имеет проблемы с современным синтаксисом C ++, компилятор CLANG является одним из наиболее совместимых со стандартами компиляторов C ++ и, как таковой, открывает обширный мир библиотек C ++ для ваших проектов C ++ Builder.  

Это не значит, что это тривиально. Всегда есть некоторые уловки и хитрости, которые необходимо сделать, чтобы использовать любую библиотеку в ваших проектах, но по сравнению с тем, что было необходимо раньше, это очень просто. 

В этом сообщении блога мы рассмотрим, что нужно, чтобы получить довольно распространенную библиотеку C ++, SQLiteCpp, работающую в проекте C ++ Builder. 

Что такое SQLiteCpp 

SQLiteCpp — это оболочка C ++ RAII для библиотеки C базы данных sqlite, обеспечивающая отличный интерфейс C ++ для этой почти универсальной переносимой библиотеки реляционных баз данных. 

Sqlite используется во многих различных приложениях, начиная от встроенных проектов и заканчивая основными приложениями, как простая в использовании интегрированная база данных для хранения, запроса и извлечения данных самых разных типов. 

Мы будем использовать SQLiteCpp для создания простого приложения, которое хранит и извлекает некоторые данные внутри простого консольного приложения в C ++ Builder. 

Получение библиотеки 

SQLiteCpp размещен на Github, и репозиторий включает все файлы, необходимые для компиляции в ваше приложение.

1. Перейдите на https://github.com/SRombauts/SQLiteCpp. 

2. Загрузите последнюю версию и распакуйте ее в папку. 

Настройка проектов 

SQLiteCpp поддерживает систему сборки CMake, поэтому мы могли бы использовать ее для создания наших библиотек с помощью C ++ Builder, но часто более интересным и прямым является создание проектов самостоятельно. Это дает дополнительное преимущество, заключающееся в том, что вы можете настроить сборку в соответствии с вашими потребностями. 

3. Создайте в папке извлечения каталог под названием cbuilder. Он будет содержать файлы нашего проекта для C ++ Builder. Результирующая структура каталогов должна выглядеть так:

4. Мы хотим создать эту библиотеку как статическую библиотеку, которую мы можем связать с нашим приложением C ++ Builder, поэтому перейдите в RAD Studio и создайте новый проект статической библиотеки. Сохраните этот проект как sqlitecpp.cbproj в каталоге cbuilder. 

5. Перейдите в Параметры проекта и включите компилятор CLANG для всех конфигураций: 

6. Перейдите в настройки библиотекаря и установите размер страницы на 64 (это основано на опыте — если вы не знаете, какой размер страницы использовать, компоновщик TLIB сообщит вам, нужно ли изменять размер страницы при построении. проект)

Выбор исходных файлов 

Теперь, когда у нас настроен наш проект, нам нужно добавить необходимые исходные файлы в проект, который будет скомпилирован. Способ определения файлов, которые нужно включить, различается для каждого проекта, и иногда требуется некоторое время, чтобы определить правильные файлы. CMakeLists.txt определенно может помочь в этом. Следующие рекомендации должны помочь: 

Для SQLiteCpp это исходные файлы: 

7. Добавьте эти файлы в проект библиотеки. 

Создание библиотеки 

Если бы вы попытались собрать эту библиотеку прямо сейчас, вы бы получили следующие ошибки:

Нам нужно обновить некоторые параметры проекта и установить некоторые пути включения. 

8. Задайте путь включения. Вы могли заметить, что в проекте есть подключаемый каталог, который находится на том же уровне, что и файлы src. Добавьте эту папку в путь включения проекта, чтобы можно было найти заголовки:

 

9. Постройте проект. Он должен успешно завершиться. Поздравляем, теперь у вас есть библиотека SQLiteCpp.

Использование библиотеки 

Теперь, когда у нас есть библиотека, мы можем создать простое приложение для ее тестирования. 

10. Создайте новое консольное приложение C ++ в той же группе проектов. Выберите библиотеку визуальных компонентов в качестве основы для консольного приложения, чтобы мы могли увидеть, как эта библиотека работает с VCL. 

11. Сохраните этот проект как test_sqlite.cbproj в папке cbuilder. 

12. Перейдите в Параметры проекта для этого проекта и добавьте ..include в качестве пути включения для этого проекта и включите компилятор CLANG, как мы это сделали для библиотеки SQLiteCpp.  

13. Добавьте пути включения в начало файла C ++ в нашем тестовом проекте: 

[crayon-6740214f3e8c8639083399/]

Обратите внимание, что мы использовали каталог ссылок #pragma, чтобы сообщить компилятору, что нам нужно связать библиотеку sqlitecpp.lib из проекта библиотеки. В качестве альтернативы вы можете просто добавить файл .lib в тестовый проект, но использование ссылки #pragma может упростить эту задачу. 

14. Теперь добавьте код для создания базы данных, вставьте данные и прочтите их снова: 

[crayon-6740214f3e8d3659314970/]

15. Наконец, запустите проект, чтобы скомпилировать его и посмотрите, как работает библиотека: 

Последние мысли 

Как показано в этом простом упражнении, C ++ Builder с компилятором CLANG открывает мир возможностей для различных библиотек и фреймворков, которые можно интегрировать в ваши проекты. Нам не нужно было вносить ни единого изменения кода, чтобы эта библиотека C ++ с открытым исходным кодом могла компилироваться и работать в наших приложениях C ++ Builder. 

Существуют тысячи других проектов на C ++, и я настоятельно рекомендую вам поэкспериментировать с их использованием в своих проектах на C ++!

Exit mobile version