IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

FreeLibrary erreur constante(DLL c++)


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut FreeLibrary erreur constante(DLL c++)
    Bonjour à tous!! C'est mon premier post ici.

    Voila, j'ai un petit problème, j'essaye d'utiliser la méthode FreeLibrary pour libérer mon handle de DLL et ca me cause une exception lors de la fermeture de ma forme. Je peux cliquer dix fois sur mon bouton dans ma forme et cela ne me fait aucune erreur, c'est seulement a la fin que mon exception est soulevé.

    Pourtant, j'ai suivi un tutoriel ici sur les DLL et je crois bien avoir suivi ce qu'il fallait faire a la lettre.

    Voici mon code dans mon DLL que j'exporte:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include <vcl.h>
    #include <windows.h>
    #pragma hdrstop
    #include "unit1.h"
    #include <iostream>
    #include <fstream>
     
    using namespace std;
     
    extern "C" __declspec(dllexport)  __stdcall void Vic(int iWaiterNumber,int iInvoiceNumber,long lAmount,int iMode);
     
    //Ici,c'est la fonction que j'ai rajouté
    void __stdcall Vic(int iWaiterNumber,int iInvoiceNumber,long lAmount,int iMode)
    {
     
    	string fichierSignet = "fichier.xml";
     
    	//Création du fichier texte
    	ofstream fichier(fichierSignet.c_str(),ios::out);
    	fichier << "Contenu du fichier34343"  ;
     
    	fichier.close();
     
     
    	int Trans;
    	Trans=iWaiterNumber;
     
    }
    Voila maintenant le code dans mon application ou j'utilise la fonction de mon dll qui crée un fichier xml .


    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    	typedef void ( __stdcall *MYDLLFUNC2) (int iWaiterNumber,int iInvoiceNumber,long lAmount,int iMode);
     
        MYDLLFUNC2 ImpFuncDLL;
    	TDateTime dtAfter, dtBefore;
    	String DayApres;
    	BOOL fFreeResult;
    	int Retour;
     
    	int iRet;
     
    	String DLLSource="pjXMLDLL.dll";
    	if (hinstDLL=LoadLibrary("pjXMLDLL.dll")) {
     
    		ImpFuncDLL = (MYDLLFUNC2)GetProcAddress(hinstDLL, "Vic");   
     
    		if (ImpFuncDLL)
    		{
    			ImpFuncDLL(14,1,134.56,5);
                                           FreeLibrary(hinstDLL);
    		}
     
    	}
     
    }
    Voila, je fais le freelibrary a la bonne place pourtant, qqun pourrait m'éclairez svplait!!

    Sam

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par défaut
    Salut Sam,
    Je ne vois pas de soucis dans ton FreeLibrary (il est mal placé cependant, il faut le mettre en dehors de la condition if (ImpFuncDLL) mais ce n'est pas ça qui provoquerait un crash).
    As-tu essayé juste un LoadLibrary suivi d'un FreeLibrary, c-a-d sans la ligne ImpFuncDLL(14,1,134.56,5);.
    Une hypothèse : Il suffit que le path de ton fichier en output ne soit pas bon pour que ça plante. Je ne connais pas bien ofstream alors je ne peux pas dire, mais quand je manipule des fichiers je met toujours le full path.

    Yarp

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Oui, tu as bien raison, je viens de tester, si j'enlève les opérations de création de mon fichier dans mon dll je peut libérer mon handle de ma librairie alors dans mon application...

    Alors je ne sais pas s'il faudrais que j'utilise une autre classe pour créer mon fichier dans mon dll. Je vais regarder ca...

    Sam

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Je regarde tjrs ca et je n'y arrive pas, pourquoi lorsque je crée un fichier avec la classe ofstream, il m'enpêche alors de faire un freelibrary de mon handle de mon dll. J'ai utilisé la classe fstream et ca n'as pas l'air plus de fonctionner.

    Merci de votre aide!!
    Sam

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par défaut
    Parceque ce n'est pas FreeLibrary le problème mais ton implémentation de ofstream qui pour une raison ou une autre provoque une erreur. Tu ferais bien de tester cette partie du code a part.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    Oui mais j'ai déja testé sur un autre bouton le même code directement dans mon programme pour créer mon fichier et ca marche sans aucun problème!!
    Et ca crée mon fichier etc... alors c'est pour cela que je trouve ca étrange...

    Merci!
    Sam

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/04/2008, 19h32
  2. Erreur => LIBMYSQL.dll
    Par wolfjeremy dans le forum Outils
    Réponses: 2
    Dernier message: 22/12/2005, 15h39
  3. erreur avec dll sous winXP sp2 / IIS5.1
    Par totoche dans le forum ASP
    Réponses: 10
    Dernier message: 12/12/2005, 16h27
  4. Erreur compilation DLL dans Eelphi 6
    Par jakouz dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2005, 16h38
  5. [C#] Erreur mscoree.dll
    Par Damsou dans le forum Windows Forms
    Réponses: 12
    Dernier message: 20/01/2005, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo