Karibot
Messages postés89Date d'inscriptionmardi 19 janvier 2010StatutMembreDernière intervention21 juin 2016
-
27 juil. 2011 à 13:11
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
27 juil. 2011 à 13:25
Bonjour,
de nouveau sur le forum pour poster un bug que je n'arrive pas à résoudre!
j'ai fais un programme qui traite des fichiers et qui stocke leurs contenus dans une base de données. j'utilise pour ca sqlite (system.data.sqlite.dll). le programme fonction très bien sous windows.
lorsque j'ai voulu le déployer sur une machine linux (distribution debian), il bug et n'arrive pas à "trouver" la dll sqlite alors que sqlite est installé sur la machine et que la dll se trouve au meme endroit que l'exe.
voici l'erreur que j'ai:
System.DllNotFoundException: System.Data.SQLite.DLL
at (wrapper managed-to-native) System.Data.SQLite.UnsafeNativeMethods:sqlite3_open_interop (byte[],int,intptr&)
at System.Data.SQLite.SQLite3.Open (System.String strFilename, SQLiteOpenFlagsEnum flags, Int32 maxPoolSize, Boolean usePool) [0x00000] in <filename unknown>:0
at System.Data.SQLite.SQLiteConnection.Open () [0x00000] in <filename unknown>:0
at LDCLogBox.BddManager.CreationBdd () [0x00000] in <filename unknown>:0
at LDCLogBox.LogBox.Process () [0x00000] in <filename unknown>:0
la question est: avez déja eu ce bug? l'avez vous résolu?
j'ai une autre question: existe-t-il une dll sqlite spéciale pour linux? parce que là je met la meme que celle que j'utilise sous windows.
merci pour vos réponses.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 27 juil. 2011 à 13:25
Salut
La réponse que je vais te donner est de la pure supposition / remarque. Je n'ai jamais testé Mono.
La DLL SQLite pour ADO.net est un wrapper. Donc une partie du code est censé être basé sur des méthodes en langage machine, donc incompatible entre Windows et Linux, et c'est à partir de ce moment (quand il cherche à charger les méthodes natives) que ton programme plante.
En effet, pour l'utiliser avec Mono, il semble qu'il faille une DLL spéciale : la DLL "managedonly". Source : le site officiel du wrapper System.Data.SQLite : "Mono support
A managed-only version of the provider is also available that works on Mono against the official SQLite library from http://www.sqlite.org/. Requires 3.6.1 or higher."
La dernière version de cette DLL (SQLite-1.0.66.0-managedonly-binaries.zip) est téléchargeable ici
Krimog : while (!(succeed = try())) ; - Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -