L’un des nombreux grands avantages de l’utilisation de C ++ pour les applications et les projets est l’accès à la vaste bibliothèque de bibliothèques et de frameworks C ++ disponibles. Fondamentalement, il existe une bibliothèque C ++ pour tout, et s’il n’y en a pas, il y a certainement une bibliothèque C pour cela.
À l’époque, il était généralement difficile d’intégrer différentes bibliothèques dans des projets C ++ en raison des différences de compatibilité entre les différents compilateurs C ++. Un projet construit avec GCC aurait du mal à se compiler sur VC ++, et un projet construit avec VC ++ aurait du mal à se compiler sur BCC, etc. L’une et l’autre.
L’utilisation de CLANG par C ++ Builder ne fait pas exception à cette règle. Alors que le compilateur classique a souvent des problèmes avec la syntaxe C ++ moderne, le compilateur CLANG est l’un des compilateurs C ++ les plus conformes aux normes disponibles et, en tant que tel, ouvre le vaste univers des bibliothèques C ++ à vos projets C ++ Builder.
Cela ne veut pas dire que c’est trivial. Il y a toujours des astuces et des ajustements à faire pour utiliser n’importe quelle bibliothèque dans vos projets, mais par rapport à ce qui était nécessaire auparavant, c’est très simple.
Dans cet article de blog, nous allons explorer ce qu’il faut pour obtenir une bibliothèque C ++ assez courante, SQLiteCpp, fonctionnant dans un projet C ++ Builder.
Table of Contents
Qu’est-ce que SQLiteCpp
SQLiteCpp est un wrapper C ++ RAII autour de la bibliothèque C de la base de données sqlite, fournissant une excellente interface C ++ à cette bibliothèque de base de données relationnelle portable presque universelle.
Sqlite est utilisé dans de nombreuses applications différentes allant des projets intégrés aux applications grand public en tant que base de données intégrée facile à utiliser pour stocker, interroger et récupérer des données de nombreux types différents.
Nous utiliserons SQLiteCpp pour créer une application simple qui stocke et récupère certaines données dans une application console simple dans C ++ Builder.
Obtenir la bibliothèque
SQLiteCpp est hébergé sur Github et le référentiel comprend tous les fichiers nécessaires à la compilation dans votre application.
1. Accédez à https://github.com/SRombauts/SQLiteCpp
2. Téléchargez la dernière version et extrayez-la dans un dossier
Mise en place des projets
SQLiteCpp prend en charge le système de construction CMake, nous pourrions donc l’utiliser pour construire nos bibliothèques avec C ++ Builder, mais il est souvent plus intéressant et direct de simplement créer les projets vous-même. Cela a l’avantage supplémentaire que vous pouvez personnaliser la construction en fonction de votre utilisation.
3. Créez un répertoire dans le dossier d’extrait appelé cbuilder. Cela contiendra nos fichiers de projet spécifiques à C ++ Builder. La structure de répertoire résultante devrait ressembler à ceci:
4. Nous voulons construire cette bibliothèque en tant que bibliothèque statique que nous pouvons lier à notre application C ++ Builder, alors allez dans RAD Studio et créez un nouveau projet de bibliothèque statique. Enregistrez ce projet sous sqlitecpp.cbproj dans le répertoire cbuilder.
5. Accédez aux options du projet et activez le compilateur CLANG pour toutes les configurations:
6. Accédez aux paramètres du bibliothécaire et définissez la taille de page sur 64 (ceci est basé sur l’expérience – si vous ne connaissez pas la taille de page à utiliser, l’éditeur de liens TLIB vous dira si la taille de page doit être ajustée lors de la création. le projet)
Sélection des fichiers sources
Maintenant que notre projet est configuré, nous devons ajouter les fichiers sources nécessaires dans le projet à compiler. La façon de déterminer les fichiers à inclure diffère pour chaque projet et il faut parfois creuser pour déterminer les bons fichiers. CMakeLists.txt peut certainement vous aider. Les directives suivantes devraient vous aider:
- Recherchez un répertoire src, les fichiers avec une extension .c, .cpp ou .cxx seront les fichiers source
- Ignorez les fichiers contenant une méthode main (). Il s’agit généralement de fichiers de test, de démonstration ou d’exemple destinés à être des applications autonomes.
Pour SQLiteCpp, ce sont les fichiers source:
- sqlite3 / sqlite3.c
- src / Transaction.cpp
- src / Backup.cpp
- src / Colonne.cpp
- src / Database.cpp
- src / Exception.cpp
- src / Statement.cpp
7. Ajoutez ces fichiers au projet de bibliothèque.
Construire la bibliothèque
Si vous essayez de créer cette bibliothèque maintenant, vous obtiendrez des erreurs similaires aux suivantes:
Nous devons mettre à jour certaines options du projet et définir des chemins d’inclusion.
8. Définissez le chemin d’inclusion. Vous avez peut-être remarqué que le projet a un répertoire d’inclusion qui est au même niveau que les fichiers src. Ajoutez ce dossier au chemin d’inclusion du projet afin que les en-têtes puissent être trouvés:
9. Générez le projet. Il devrait se terminer avec succès. Félicitations, vous avez maintenant votre bibliothèque SQLiteCpp.
Utilisation de la bibliothèque
Maintenant que nous avons notre bibliothèque, nous pouvons créer une application simple pour la tester.
10. Créez une nouvelle application console C ++ dans le même groupe de projets. Choisissez la bibliothèque de composants visuels comme cadre pour l’application console afin que nous puissions voir cette bibliothèque fonctionner avec la VCL.
11. Enregistrez ce projet sous le nom test_sqlite.cbproj dans le dossier cbuilder.
12. Allez dans les options de projet pour ce projet et ajoutez ..include comme chemin d’inclusion pour ce projet et activez le compilateur CLANG, comme nous l’avons fait pour la bibliothèque SQLiteCpp.
13. Ajoutez les chemins d’inclusion en haut du fichier C ++ dans notre projet de test:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <vcl.h> #include <windows.h> #pragma hdrstop #pragma argsused #include <tchar.h> #include <stdio.h> #include <conio.h> #include <SQLiteCpp/SQLiteCpp.h> #pragma link "sqlitecpp.lib" int _tmain(int argc, _TCHAR* argv[]) { return 0; } |
Notez que nous avons utilisé le répertoire de liens #pragma pour indiquer au compilateur que nous devons lier la bibliothèque sqlitecpp.lib à partir du projet de bibliothèque. Vous pouvez également simplement ajouter le fichier .lib au projet de test, mais l’utilisation du lien #pragma peut rendre cela plus simple.
14. Ajoutez maintenant du code pour créer une base de données, insérez des données et relisez-le à nouveau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
int _tmain(int argc, _TCHAR* argv[]) { // Open a database file in create/write mode SQLite::Database db("test.db3", SQLite::OPEN_READWRITE | SQLite::OPEN_CREATE); std::cout << "SQLite database file " << db.getFilename().c_str() << "n"; // Create a new table with an explicit "id" column aliasing the underlying rowid db.exec("DROP TABLE IF EXISTS test"); db.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, value TEXT)"); // first row db.exec("INSERT INTO test VALUES (NULL, "test")"); // second row db.exec("INSERT INTO test VALUES (NULL, "second")"); // update the second row db.exec("UPDATE test SET value="second-updated" WHERE id='2'"); // Check the results : expect two row of result SQLite::Statement query(db, "SELECT * FROM test"); std::cout << "SELECT * FROM test :n"; while (query.executeStep()) { std::cout << "row (" << query.getColumn(0) << ", "" << query.getColumn(1) << "")n"; } getch(); return 0; } |
15. Enfin, exécutez le projet pour le compiler et voir la bibliothèque en fonctionnement:
Dernières pensées
Comme cet exercice simple l’a démontré, C ++ Builder avec le compilateur CLANG ouvre un monde de possibilités pour les différentes bibliothèques et frameworks qui peuvent être intégrés dans vos projets. Nous n’avons pas eu à faire une seule modification de code pour que cette bibliothèque C ++ open source compile et fonctionne dans nos applications C ++ Builder.
Il existe des milliers d’autres projets C ++ et je peux vous encourager fortement à expérimenter leur utilisation dans vos projets C ++!
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition