J'ai programm� un wrapper C++/CLI pour utilise berkeleydb. Ce wrapper fonctionne tr�s bien mais j'ai remarqu� hier un soucie qui ne viens pas de mon code.
J'ai une class static, qui contiens les objets des bases de donn�es berkeley donc qui utilise mon wrapper, cette class contient aussi une foncton
Code : S�lectionner tout - Visualiser dans une fen�tre � part dbInstancesvoici comment ce passe l'initalisation
Code : S�lectionner tout - Visualiser dans une fen�tre � part Init()
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 /// <summary> /// Objet de la base de donnes de liens /// </summary> public static BerkeleyQueueManagement db_hostqueues = new BerkeleyQueueManagement("./Env_dir_db_hostqueues", "db_hostqueues.db", Convert.ToUInt32(ConfigurationManager.AppSettings["CacheGigabyte"]), Convert.ToUInt32(ConfigurationManager.AppSettings["CacheSize"]), Convert.ToInt32(ConfigurationManager.AppSettings["CacheNumber"]), 1, "logdb_hostqueues.txt", Convert.ToUInt32(ConfigurationManager.AppSettings["TxnTimeout"]), Convert.ToUInt32(ConfigurationManager.AppSettings["TxnMax"])); etc....
Puis l'initialisation des bases de donn�es
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 /// <summary> /// Initialise les bases de données /// </summary> public static void Init() { if (!db_hostqueues.OpenDatabase()) throw new Exception("Impossible de dmarrer l'application car HostQueue ne peut pas tre ouverte"); if (!db_hostdictionary.OpenDatabase()) throw new Exception("Impossible de dmarrer l'application car HostDictionnary ne peut pas tre ouverte"); if (!db_waitqueue.OpenDatabase()) throw new Exception("Impossible de dmarrer l'application car WaitQueue ne peut pas tre ouverte"); if (!db_readyqueue.OpenDatabase()) throw new Exception("Impossible de dmarrer l'application car ReadyQueue ne peut pas tre ouverte"); }
A ce niveau tout vas bien rien de bien m�chant sauf que je ne peux pas initialiser toutes mes bases de donn�es
si je fait :
sa marche !!!
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 /// <summary> /// Initialise les bases de donnes /// </summary> public static void Init() { if (!db_hostqueues.OpenDatabase()) throw new Exception("Impossible de dmarrer l'application car HostQueue ne peut pas tre ouverte"); }
Si je fait :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 /// <summary> /// Initialise les bases de donnes /// </summary> public static void Init() { if (!db_hostqueues.OpenDatabase()) throw new Exception("Impossible de dmarrer l'application car HostQueue ne peut pas tre ouverte"); if (!db_hostdictionary.OpenDatabase()) throw new Exception("Impossible de dmarrer l'application car HostDictionnary ne peut pas tre ouverte"); }
Plantage de l'application et berkeleydb qui me dit que le param�tre deest invalide
Code : S�lectionner tout - Visualiser dans une fen�tre � part berleydb DbEnv::set_tx_max
D�s que j'essaie d'ouvrir plusieurs base de donn�es sa plante.
Je me demande donc si cela ne viens pas de mon code C++ ? Je fais la liaison avec la dll de berkeleydb par
Je ne vois pas ce qui cloche dans mon code donc je suppose que peut �tre sa viens de la compilation mais je ne trouve pas non plus ce qui cloche a ce niveau
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2#pragma comment (lib, "libdb47.lib")
Merci de votre aide
Partager