PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → LibMariadb 32 et 64 bits
LibMariadb 32 et 64 bits
Iniciado por grego30, 18,jun. 2020 11:06 - 7 respuestas
Miembro registrado
31 mensajes
Publicado el 18,junio 2020 - 11:06
Bonjour,

j'ai un projet qui tourne a la fois en 32 bits et en 64 bits.
il y a sur les postes déployés 2 exécutables DANS LE MEME REPERTOIRE
monappli32.exe et monappli64.exe

cette application utilise le driver natif mariadb et s'appui sur les dll de windev:
wdxx0maria.DLL et wdxx0maria64.DLL

Le problème c'est que pour que l'application fonctionne il faut aussi la dll libmariadb.dll
Cette dll est différente entre la version 32 et la version 64 bits.

Comment puis-je faire pour avoir une dll libmariadb32.dll et une libmariadb64.dll et que l'application charge et utilise la bonne dll.

De tous les tests effectués, il semble que le nom de cette dll est fixe.

J'ai testé avec la fonction ChargeDLL mais ça ne fonctionne pas.

Auriez vous une solution pour garder les 2 .exe dans le même répertoire mais charger dynamiquement la bonne dll libmariadb.dll en fonction du contexte.

Merci de votre aide.

Cordialement
Miembro registrado
334 mensajes
Publicado el 18,junio 2020 - 19:18
2 versionS dans 2 dossiers séparés, et le tours est joué...

--
———————————————————————————————————
Ce qui se conçoit bien se code clairement et se débogue facilement...

- Pastiche d’une citation de Nicolas Boileau -
Miembro registrado
31 mensajes
Publicado el 18,junio 2020 - 22:09
Bonjour et merci de votre réponse mais j’avais bien précisé DANS LE MÊME RÉPERTOIRE.

Merci
Miembro registrado
31 mensajes
Publicado el 18,junio 2020 - 22:10
Bonjour et merci de votre réponse mais j’avais bien précisé DANS LE MÊME RÉPERTOIRE.

Merci
Miembro registrado
50 mensajes
Publicado el 18,junio 2020 - 22:10
Bonjour,
Personnellement, j'ajoute les fichiers libmariadb32.dll et libmariadb64.dll et au démarrage de mon exe, je renomme l'un des 2 en libmariadb.dll, ceci avant d'établir la connexion.
Miembro registrado
31 mensajes
Publicado el 19,junio 2020 - 07:59
Bonjour

Ça aurait pu être une bonne solution, sauf que dans mon cas, l'appli est sur un serveur. Le répertoire est partagé est plusieurs poste peuvent simultanément lancer l'application. Il peut y avoir des postes en 32 et des postes en 64 bits.
Il m'est donc impossible de renommer la dll dynamiquement car il y aura forcement des conflits.

Si vous avez une autre idée je suis preneur. Merci de votre aide.
Miembro registrado
499 mensajes
Publicado el 19,junio 2020 - 09:03
Bonjour,

Une solution pourrait être de lancer vos exécutables à travers des fichiers .bat/.cmd qui personnaliseraient la variable d'environnement PATH pour que chaque exécutable cherche ses DLL dans des répertoires différents.

En mettant la DLL 32bits dans un dossier "x86" et la DLL 64bits dans un dossier "x64", ça pourrait donner ça:

Un fichier bat pour la version 32
SET PATH=c:\chemin\vers\x86;%PATH%
START MonApplication32bits.exe


Et un fichier bat pour la version 64
SET PATH=c:\chemin\vers\x64;%PATH%
START MonApplication64bits.exe


Mais avant de rajouter autant de complexité, il convient de se poser les questions de l'intérêt:
- Qu'est-ce qui empêche techniquement que les exécutables ne peuvent pas être dans des dossiers séparés ?
- Si votre application doit supporter des plateformes x86 et x64, pourquoi ne pas proposer qu'une seule version en x86, qui fonctionnera sur les deux plateformes ?
Publicado el 19,junio 2020 - 13:50
grego30 a formulé ce vendredi :
Bonjour

Ça aurait pu être une bonne solution, sauf que dans mon cas, l'appli est sur
un serveur. Le répertoire est partagé est plusieurs poste peuvent
simultanément lancer l'application. Il peut y avoir des postes en 32 et des
postes en 64 bits. Il m'est donc impossible de renommer la dll dynamiquement
car il y aura forcement des conflits.

Si vous avez une autre idée je suis preneur. Merci de votre aide.


Personnellement je mets les applicatifs (exe + dll) sur le poste local
afin d'éviter du traffic de chargement des exe et dll.
Cela pourrait-également être une solution à votre problème.

--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus