IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQLite Discussion :

sqlite3.dll dans Visual Studio 2005 ?


Sujet :

SQLite

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Points : 44
    Points
    44
    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 !

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    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 !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    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.

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Je n'ai rien modifié, voilà un exemple de code sous VC++ 6.0 qui ne pose pas de problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser une DLL sans le .LIB dans Visual Studio 2005
    Par lekernel dans le forum Visual C++
    Réponses: 5
    Dernier message: 02/08/2007, 08h54
  2. Intégrer le framework atlas dans Visual Studio 2005
    Par nikalkal dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 03/04/2007, 16h44
  3. utiliser string.h dans visual studio 2005
    Par boss_gama dans le forum Visual C++
    Réponses: 4
    Dernier message: 04/03/2007, 15h27
  4. Réponses: 3
    Dernier message: 28/11/2006, 03h51
  5. [C# 1.1/VS] Comment compiler 1.1 dans Visual Studio 2005 ?
    Par Aliend dans le forum Visual Studio
    Réponses: 4
    Dernier message: 08/09/2006, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo