Sqlite et mono sous linux

Karibot Messages postés 89 Date d'inscription mardi 19 janvier 2010 Statut Membre Dernière intervention 21 juin 2016 - 27 juil. 2011 à 13:11
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 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.

1 réponse

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
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é. -
0
Rejoignez-nous