2009-04-24 10 views
0

J'ai importé sqlite3.c sqlite3.h dans mon projet - et j'ai de la difficulté à le compiler.Problème avec SQLite3 sous VC9

Erreurs:

1>c:\...\storage_manager.h(7) : error C2079: 'storage_manager::db' uses undefined struct 'sqlite3' 
    1>storage_manager.cpp 
    1>c:\...\storage_manager.h(7) : error C2079: 'storage_manager::db' uses undefined struct 'sqlite3' 
    1>ui_manager.cpp 
    1>c:\...\storage_manager.h(7) : error C2079: 'storage_manager::db' uses undefined struct 'sqlite3' 

Code:

#pragma once 
#include "sqlite3.h" 
class storage_manager 
{ 
    sqlite3 db; 
    sqlite3** db_pp; 
public: 
    void open() 
    { 
     sqlite3_open("data.db", db_pp); 
    } 
}; 
+0

Essayez-le sans #pragma fois –

+0

Supprimer le pragma ne change rien. –

Répondre

1

Je viens de remarquer que vous essayez de créer une variable de pile de type sqlite3 appelé db. Cela ne fonctionnera pas, car sqlite3 est un gérer et vous ne pouvez avoir qu'une variable pointeur. Vous devez ensuite passer l'adresse de cette variable pointeur à sqlite3_open.

@Neil Butterworth a repéré un peu plus tôt que moi :-)

+0

Le fichier sqlite3.h le fait déjà –

+0

Cela ne fonctionne toujours pas. –

+0

Peut-être que vous allez essayer les déclarations directes, elles fonctionnent pour moi (gcc sous Linux) – lothar

1

Vous n'êtes pas censé créer des objets de type sqlite3, seuls des pointeurs. Supprimer la ligne:

sqlite3 db; 

et tout devrait bien se passer.