begin process at 2012 02 07 07:33:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Système

 > 

Mémoire

 > 

Problème de chargement de DLL


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de chargement de DLL

samedi 26 janvier 2008 à 11:35:55 | Problème de chargement de DLL

Toya78

Bonjour à tous, Après avoir lu plusieurs articles sur les DLL et leur utilisation, je me retrouve face à un dilemne. J'ai lu qu'il existait un "conflit" entre String et PChar lors de l'appel de fonction de DLL et qu'il fallait utiliser ShareMem qui nécessitait le fichier borlndmm.dll. Or je n'en suis pas encore à ce stade. Voici un code tout simple : procedure TForm1.Button1Click(Sender: TObject); var H : THandle; begin H := LoadLibrary('ma_dll.dll'); end; Ce simple (et inutile) morceau de code me réclame borlndmm.dll (sur un PC sans Delphi). Aurais-je loupé quelque chose ? Je précise que je compile sous Delphi 2007 et que la DLL en question contient 2 fonctions dont tous les paramètres sont des Integer (la DLL est compilée avec Visual C++).
samedi 26 janvier 2008 à 12:41:26 | Re : Problème de chargement de DLL

cirec

Membre Club Administrateur CodeS-SourceS
Salut,

voici ce que Delphi écrit en commentaire au début d'une nouvelle source de DLL :

{ Remarque importante concernant la gestion de mémoire de DLL : ShareMem doit
  être la première unité de la clause USES de votre bibliothèque ET de votre projet
  (sélectionnez Projet-Voir source) si votre DLL exporte des procédures ou des
  fonctions qui passent des chaînes en tant que paramètres ou résultats de fonction.
  Cela s'applique à toutes les chaînes passées de et vers votre DLL --même celles
  qui sont imbriquées dans des enregistrements et classes. ShareMem est l'unité
  d'interface pour le gestionnaire de mémoire partagée BORLNDMM.DLL, qui doit
  être déployé avec vos DLL
. Pour éviter d'utiliser BORLNDMM.DLL, passez les
  informations de chaînes avec des paramètres PChar ou ShortString
. }

dans ton cas tu peux supprimer ShareMem de la Clause Uses de ta DLL et de ton projet.

Et si la DLL exporte des procédures ou des fonctions qui passent des chaînes en tant que paramètres ou résultats de fonction.
Il te faut fournir BORLNDMM.DLL avec ton application ...
tu trouveras cette DLL dans le répertoire Bin de ton Delphi.

 
@+
Cirec

samedi 26 janvier 2008 à 15:02:44 | Re : Problème de chargement de DLL

Toya78

Oui Cirec je l'avais vu. Mais justement mon exemple n'appelle aucune fonction de DLL avec des String (il n'appelle même rien du tout) il fait juste un LoadLibrary. Il n'y a aucune autre ligne de code dans l'implémentation. Et pourtant on me demande BORLNDMM.DLL lorsque je fais le LoadLibrary... ce que je ne comprends pas...
samedi 26 janvier 2008 à 15:03:34 | Re : Problème de chargement de DLL

Toya78

J'ajoute que Sharemem n'apparaît pas dans ma clause Uses bien évidemment.
samedi 26 janvier 2008 à 16:46:57 | Re : Problème de chargement de DLL

cirec

Membre Club Administrateur CodeS-SourceS

as-tu le source de la DLL
ou les déclarations des deux fonctions ...
parce que ton histoire ne me parait pas très logique ... Bon en même temps je n'ai aucune connaissance en visual C++ Mais histoire d'essayer de comprendre le pourquoi du comment.
 
@+
Cirec

samedi 26 janvier 2008 à 17:01:26 | Re : Problème de chargement de DLL

Toya78

Je n'ai pas la source malheureusement... la DLL n'étant pas de moi. La DLL contient 2 fonctions (d'après tdump). La DLL sert à décompresser/compresser des fluxs en compression LZS.
Je ne connais qu'une seule des déclarations :

function Compress(Src : Pointer; SrcLen : Integer; Dst : Pointer; var DstLen : Integer) : LongBool

L'autre fonction est Decompress. Je ne connais pas sa déclaration (aucune doc. avec la DLL) mais je suppose que ça ressemble à Compress (en tout cas, pas de String dans les environs).

Je sais que c'est bizarre qu'il me demande BORLNDMM.DLL alors que je n'utilise pas de String et encore moins l'unité Sharemem... J'aimerais bien comprendre et ne plus avoir besoin de ce BORLNDMM.DLL...

samedi 26 janvier 2008 à 17:14:58 | Re : Problème de chargement de DLL

Toya78

Je viens de faire quelques tests : j'ai créé sous Delphi une DLL contenant une fonction Somme(A, B : Integer).
Avec elle aucun problème : BORLNDMM.DLL n'est pas réclamé du tout lorsque je fais le LoadLibrairy.

J'en déduis donc que ça vient de la DLL écrite sous Visual C++... Dommage que je n'aie rien lu là-dessus.
samedi 26 janvier 2008 à 17:25:52 | Re : Problème de chargement de DLL

Toya78

Je viens de tester la DLL enquiquinante en la chargeant de manière statique. Aucune erreur si je ne mets pas d'appel de fonction. Par contrôle problème au démarrage si j'écris un appel de sa fonctin : on me demande BORLNDMM.DLL...
samedi 26 janvier 2008 à 17:31:52 | Re : Problème de chargement de DLL

cirec

Membre Club Administrateur CodeS-SourceS
Désolé mais à part fournir BORLNDMM.DLL avec ton application je n'ai aucune autre solution à te proposer

 
@+
Cirec

samedi 26 janvier 2008 à 17:33:38 | Re : Problème de chargement de DLL

Toya78

Tant pis Cirec. Je crois en effet que ça risque d'être difficile.
Merci quand même d'avoir pris le temps de me lire :)


Cette discussion est classée dans : problème, chargement, dll, lu, borlndmm


Répondre à ce message

Sujets en rapport avec ce message

Problème de variables dans une dll [ par crostif ] Le cas :il s'agit de plusieurs procédures et fonctions que j'utilise en masse dans un programme depuis plusieurs forms. Je souhaite donc créer une dll Problème de debuggeravec un dll [ par Banban113 ] Salut tout le monde !Je suis un petit nouveau sur ce site !!!!Bon voila, je bosse sur un logiciel et je dois faire une dll appelé par celui-ci.J'arriv pb chargement DLL : dbexpinf.dll [ par deubal ] Bonjour tous le monde, Voila, j'utilise DB EXPRESS, et lorsque que je lance mon projet il me dit "Impossible de charger la DLL : dbexpinf.dll". Si que Problème XRXSNMP.DLL NOT FOUND [ par clody ] Boujour,J'utilise Delphi 5 avec un ordi windows XP. Lors de lancement de mon application, je reçois un message : "XRXSNMP.DLL NOT FOUND".Que dois-je f Problème Delphi 4 Pro avec BORDBK40.DLL [ par jack554 ] BonjourAprès l'install de Delphi 4 Pro, je ne peux exécuter aucun projet, j'obtiens le message :"Le noyau du débogueur BORDBK40.DLL est manquant ou no Evenements d'un TApplication non géré à cause d'un chargment de DLL... [ par OrsE ] Salut tout le monde, Ceci est la suite de ce post, http://www.delphifr.com/forum.v2.aspx?ID=480490 Je le refait car j'ai pu identifier le problème cet Chargement Dll [ par PoulpHunter ] Bonjours, je débute et j'aimerais charger une dll comme sa :function SongOff():Boolean;  external 'msnmusic.dll' name 'SongOff';mais cela me cause une Problème avec TOutlookApplication [ par Nico33411 ] Bonjour à tousJe voudrais utiliser le composant TOutlookApplication dans mon appli en delphi pour envoyer des mails en utilisant un compte enregistré Erreur de chargement de la DLL [ par jldk007 ] BonjourJe dispose d'un Windows XP Familiale SP2 et d'Office XP Pro. Je n'arrive pas à afficher la boite de dialogue du masque de saisie dans MS ACCESS Chargement de DLL [ par barbichette ] Salut,J'ai un petit souci. Je ne sais pas si c'est possible de faire marcher ceci :- J'ai une DLL qui charge le contenu d'un fichier dans un tableau [


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales