Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > SQLite
SQLite Forum d'entraide SQLite
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2007, 15h12   #1
Futur Membre du Club
 
Inscription : février 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 54
Points : 18
Points : 18
Par défaut sqlite3.dll dans Visual Studio 2005 ?

Bonjour.

J'ai une application C++ qui tourne sous Unix/Mac OS X actuellement, et je voudrais la transposer sous Visual Studio 2005.

Je n'ai jamais programmé dans Windows et je ne sais pas comment utiliser des bibliothèques du style dll. SQLite semble fournir un fichier sqlite3.dll pour les développeurs Windows. Comment faire pour l'importer et l'utiliser dans un projet VS ?
J'imagine que les fichiers dll contiennent les définitions des fonctions déclarées dans sqlite3.h. Donc ces deux fichiers doivent suffire pour utiliser toutes les fonctions sqlite de mon programme non ?

Je découvre le monde du développement sous Windows et je ne trouve pas d'aider pour des choses aussi simples que ça.
Merci !
Luke58 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2007, 09h29   #2
Membre du Club
 
Inscription : juillet 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 66
Points : 50
Points : 50
Cette question m'intéresse aussi
Je n'ai réussi à inclure les fonctionnalité de Sqlite dans un projet visualC++ 6.0 que de la manière suivante :
inclure sqlite3.h et sqlite3.lib dans mon projet et placer sqlite3.dll dans le même répertoire que mon exécutable.
De plus j'ai récupérer sqlite3.lib sur le net car je n'ai pas réussi à le recréer par compilation des sources... ma solution n'est donc pas très élégante et je cherche mieux !
SERTNM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 11h57   #3
Futur Membre du Club
 
Inscription : février 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 54
Points : 18
Points : 18
Apparemment on peut utiliser la lib qui se créée avec l''outil LIB en ligne de commande (LIB /def:sqlite3.def).

Mais comment fait-tu pour accéder aux fonctions de sqlite après avoir fait ce que tu dis. Il faut modifier un peu les déclarations et/ou appels de fonctions dans le code non ? Y'a pas une histoire avec __declspec(dllimport) ou __stdcall. En fait j'ai essayé plein de truc mais j'ai toujours une erreur à l'édition des liens.
Luke58 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h15   #4
Membre du Club
 
Inscription : juillet 2006
Messages : 66
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 66
Points : 50
Points : 50
Je n'ai rien modifié, voilà un exemple de code sous VC++ 6.0 qui ne pose pas de problème :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
        sqlite3 *pDB;
	int result = sqlite3_open(lpszPathName,&pDB);
	IF(result==SQLITE_OK)
	{
		sqlite3_stmt *pStmt;
		const char* szError=0;
		result = sqlite3_prepare(pDB,							
					"SELECT MIN(toto) FROM Data", 
					-1,							
					&pStmt,						
					&szError );						
 
		IF(sqlite3_step(pStmt)==SQLITE_ROW) 
		{
		    toto = sqlite3_column_int(pStmt,0);
		}		
		sqlite3_finalize(pStmt);
	}
	sqlite3_close(pDB);
quelle erreur as tu exactement ?
SERTNM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 00h45   #5
Futur Membre du Club
 
Inscription : février 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 54
Points : 18
Points : 18
Dans un projet vide, j'arrive en effet à acceder à la dll de sqlite via sqlite3.lib.

Par contre quand je créé un projet avec interface Windows Form et que j'inclue les fichiers sqlite nécessaires, de la meme manière, là j'ai une erreur à l'édition des liens.

Code :
1
2
3
4
5
 Édition des liens en cours...
SQLite3Cpp.obj : warning LNK4248: jeton typeref non résolu (0100001A) pour 'SQLite3Cpp.sqlite3' ; l'image risque de ne pas s'exécuter
SQLite3Cpp.obj : error LNK2028: jeton non résolu (0A00000E) "extern "C" int __stdcall sqlite3_open(char const *,struct SQLite3Cpp::sqlite3 * *)" (?sqlite3_open@@$$J18YGHPBDPAPAUsqlite3@SQLite3Cpp@@@Z) référencé dans la fonction "private: void __clrcall SQLite3Cpp::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@SQLite3Cpp@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
SQLite3Cpp.obj : error LNK2019: symbole externe non résolu "extern "C" int __stdcall sqlite3_open(char const *,struct SQLite3Cpp::sqlite3 * *)" (?sqlite3_open@@$$J18YGHPBDPAPAUsqlite3@SQLite3Cpp@@@Z) référencé dans la fonction "private: void __clrcall SQLite3Cpp::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@SQLite3Cpp@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
C:\Users\Clément\IUT\Visual Studio\SQLite3Cpp\Debug\SQLite3Cpp.exe : fatal error LNK1120: 2 externes non résolus
pour un simple code :

Code :
1
2
3
4
5
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
			sqlite3 *db;
			const char *base = ".\\test.db3";
			sqlite3_open(base, &db);
		}
Sinon je pense que ta solution n'a rien "d'inélégant". sqlite3.h et sqlite3.lib font partie du projet. Tu doit éventuellement pouvoir placer sqlite3.dll dans un quelconque dossier système (system, system32...) pour éviter de le trimballer avec ton éxecutable mais c'est tout.
Luke58 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 15h58   #6
Futur Membre du Club
 
Inscription : février 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 54
Points : 18
Points : 18
Bon ça marche finalement.
Il fallait paramétrer le projet avec une prise en charge du Common Language Runtime simple et non MSIL.
Merci SERTNM.
Luke58 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h25.


 
 
 
 
Partenaires

Hébergement Web