Précédent   Forum du club des développeurs et IT Pro > C et C++ > Outils pour C & C++ > GDB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/01/2011, 21h22   #1
Kalith
Membre éprouvé
 
Homme
Doctorant en astrophysique
Inscription : juin 2007
Messages : 310
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Doctorant en astrophysique

Informations forums :
Inscription : juin 2007
Messages : 310
Points : 420
Points : 420
Par défaut [MinGW] LoadLibrary + gdb

Bonjour,

J'ai un soucis avec GDB et la fonction LoadLibrary de l'API windows. Peut-être quelqu'un aura une idée d'où ça vient, moi je pêche...

J'ai donc une petite DLL de test, compilée à partir du code suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
#include <gl\gl.h>
#include <windows.h>
 
void __declspec(dllexport) SomeFunction()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
 
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    return TRUE;
}
... et que je créé avec les commandes :
Code :
1
2
mingw32-g++.exe -g -c DLLmain.cpp -o DLLmain_d.o
mingw32-g++.exe -shared -Wl,--dll  DLLmain_d.o -o maDLL_d.dll -lOPENGL32
Je la charge ensuite dans un autre petit programme :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <windows.h>
#include <iostream>
 
int main(int argN, char** args)
{
    HMODULE mhInst = LoadLibrary("maDLL_d");
 
    if (!mhInst)
    {
        std::cout << "## problem : " << GetLastError() << std::endl;
        return 1;
    }
 
    return 0;
}
... compilé par :
Code :
1
2
mingw32-g++.exe -g -c main.cpp -o main.o
mingw32-g++.exe main.o -o test_d.exe
Je lance alors gdb :
... et j'obtiens :
L'erreur 6 signifie "Invalid handle" ou "Descripteur non valide" d'après MSDN.
Le problème ne survient que si ma DLL est linkée avec opengl32 ou d3d9 (je n'ai pas tout testé, mais ces deux bibliothèques ne fonctionnent pas en tout cas), et seulement si le programme est lancé via le debuggeur. Sinon tout fonctionne à merveille...

C'est un soucis qui n'est apparu que récemment, je ne sais trop pourquoi...

J'utilise la dernière version de MinGW G++ (4.5.2) avec GDB 7.2, mais le problème se posait aussi avec G++ 4.4 et GDB 6.8...

Merci d'avance !

(je n'ai pas trouvé de bon forum de support pour MinGW. Si vous en connaissez un, ça sera peut être plus adéquat)
Edit : question également posée sur le Nabble de MinGW
Kalith est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 19h59   #2
Vorl
Invité de passage
 
Inscription : octobre 2004
Messages : 5
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 5
Points : 2
Points : 2
Bonjour,

J'ai eu récemment un problème qui était assez similaire. Après de longues, très longues recherches, j'ai finalement trouvé que le coupable était ... antivir ! En le désinstallant, tout va mieux. C'est visiblement depuis une mise a jour récente (~ décembre je pense) et y'a plusieurs personnes qui ont rapporté le problème a Avira. Pour info, il n'y a pas que gdb d'impacté, le debugeur de microsoft aussi.
J'espère que ca t'aidera.

Vorl
Vorl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 13h42   #3
Kalith
Membre éprouvé
 
Homme
Doctorant en astrophysique
Inscription : juin 2007
Messages : 310
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Doctorant en astrophysique

Informations forums :
Inscription : juin 2007
Messages : 310
Points : 420
Points : 420
:'(

Je viens de réinstaller Windows...
Et effectivement j'utilise Antivir !! Non d'une pipe...
Merci à toi
Kalith est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h25.


 
 
 
 
Partenaires

Hébergement Web