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

Visual C++ Discussion :

[VS2010] Options de compilation/link x64-> MessageBox qui ne s'affiche pas


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 31
    Par d�faut [VS2010] Options de compilation/link x64-> MessageBox qui ne s'affiche pas
    Bonjour � tous,

    Je cherche � comprendre pourquoi mon projet DLL n'affiche pas les MessageBox que j'utilise pour logguer les entr�es de fonction (le hint m'indique #define MessageBox MessageBoxA lorsque je passe sur MessageBox ).
    Je pr�cise que c'est une DLL � l'origine 32 bits que je convertis en 64 bits, mais � l'origine c'�tait compil� sous Visual Studio 6.
    C'est une DLL JNI, qu'on appelle avec une application JAVA.
    Je pense que le probl�me vient des options de compilation.

    Mes options de compilation:

    Compilateur:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    /Zi /nologo- /W3 /WX- /O1 /D "WIN32" /D "NDEBUG" /D "IAL" /D "_LITTLE_ENDIAN" /D "_AMD64_" /D "amd64" /D "WIN32_LEAN_AND_MEAN" /GF /Gm- /EHsc /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fp".\Release2\MADLL_VISUAL_STUDIO_6.pch" /Fa".\Release2\" /Fo".\Release2\" /Fd".\Release2\" /Gd /errorReport:prompt
    Linker:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    /OUT:"x64/Release2/madll.dll" /INCREMENTAL:NO /DLL ".\EZtwain\eztwain4.lib" ".\lib\ijl15.lib" ".\lib\ijl15l.lib" "user32.lib" /MANIFEST:NO /ManifestFile:"x64\Release 2\madll.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:NO /DEBUG /PDB:"C:\svnsandbox\trunk\jtwain_new_64bit_vs2010\x64\Release 2\madll.pdb" /SUBSYSTEM:WINDOWS /PGD:"C:\svnsandbox\trunk\madll_64bit_vs2010\x64\Release 2\madll.pgd" /DYNAMICBASE:NO /NXCOMPAT:NO /MACHINE:X64 /ERRORREPORT:PROMPT

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    MessageBox pour logger des entr�es de fonction, c'est un peu lourd, vous trouvez pas ?
    Un OutputDebugString https://msdn.microsoft.com/fr-fr/lib...=vs.85%29.aspx, c'est bien plus light.

    Il vous dit quoi le d�bogueur ?

    Utilisez une capsule RAII avec OutputDebugString pour avoir automatiquement les trace d'entr� et de sortie d'une fonction.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 31
    Par d�faut
    MessageBox pour logger des entr�es de fonction, c'est un peu lourd, vous trouvez pas ?
    Un OutputDebugString https://msdn.microsoft.com/fr-fr/lib...=vs.85%29.aspx, c'est bien plus light.
    Si, tout � fait, mais c'�tait d�j� dans le code d'origine donc je suis excus�.
    Depuis mon dernier message j'ai voulu mettre quelques logs artisanaux. Par contre, le pemier log s'affiche et la suite ne s'affiche pas, m�me si je mets deux logs cons�cutifs. En lisant ensuite votre message, je me suis dit que probablement j'avais besoin de ce que vous appelez la "capsule RAII", dont je ma�trise mal le concept.

    Il vous dit quoi le d�bogueur ?
    Je ne sais pas l'utiliser dans ce cas l�. Je g�n�re ma DLL et je l'int�gre ensuite � mon projet dans Tomcat pour que ma JVM 64 bits l'appelle.

    Utilisez une capsule RAII avec OutputDebugString pour avoir automatiquement les trace d'entr� et de sortie d'une fonction.
    Je vais chercher un mod�le de capsule RAII sur le web pour comprendre ce que je fais.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 31
    Par d�faut
    Je veux m'inspirer de ce code pour le RAII:

    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
    #include <string>
    #include <mutex>
    #include <iostream>
    #include <fstream>
    #include <stdexcept>
     
    void write_to_file (const std::string & message) {
        // mutex to protect file access (shared across threads)
        static std::mutex mutex;
     
        // lock mutex before accessing file
        std::lock_guard<std::mutex> lock(mutex);
     
        // try to open file
        std::ofstream file("example.txt");
        if (!file.is_open())
            throw std::runtime_error("unable to open file");
     
        // write message to file
        file << message << std::endl;
     
        // file will be closed 1st when leaving scope (regardless of exception)
        // mutex will be unlocked 2nd (from lock destructor) when leaving
        // scope (regardless of exception)
    }
    Seulement j'utilise Visual Studio 2010, qui n'a pas la classe mutex dans la librairie standard.
    Donc � ce que je crois comprendre je dois installer la librairie Boost qui le fait...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 31
    Par d�faut
    Je vais suivre le tutoriel de cette page, je t�l�charge une ancienne version de boost (1.47.0) pour coller � la proc�dure.
    boost_1_47_0.zip
    How to use Boost in Visual Studio 2010

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Je ne vois pas trop le rapport entre votre probl�me initial et les mutex.
    Pour faire une capsule RAII, un objet avec un constructeur et un destructeur fait l'affaire.

    Pour votre probl�me initial, le d�buggeur est votre meilleur ami.

    Je ne suis pas un sp�cialiste de Tomcat, j'y connais m�me rien, mais il doit quand m�me charger les Dll comme les autres programmes.

    Donc, la strat�gie pour le d�bugging dans VS, c'est de configurer les param�tres de d�bugging de votre projet de Dll pour que �a lance le programme qui chargera la Dll.
    Si c'est bien fait, les param�tres n�cessaires au programme sont en ligne de commande et en fichier de configuration.
    Les param�tres de d�bugging du projet permettent d'indiquer les param�tres de l'ex�cutable et son r�pertoire de travail.

    En lan�ant le d�bogueur depuis votre projet dans VS et avec des breakpoints, il lancera le programme (donc tomcat ici) avec les bonnes options et le d�bogueur sera pr�venu du chargement d'une Dll, et modifiera le code le la Dll � la vol� pour que les point d'arr�t deviennent de vrais "int 3" dans le code binaire.

    Quand l'ex�cutable arrive sur un ses "int 3", le programme s'interrompt, passe la main au d�buggeur qui vous affichera votre code avec les valeurs de variables qui va bien.
    Si vous n'arrivez pas � ces points d'arr�t, c'est que le probl�me n'est vraisemblablement pas dans votre code.

Discussions similaires

  1. R�ponses: 2
    Dernier message: 26/01/2015, 13h55
  2. Option de compilation gcc : sem.h
    Par Luther13 dans le forum Linux
    R�ponses: 8
    Dernier message: 29/12/2004, 12h29
  3. [Compilateur]Option de compil
    Par Guybrush dans le forum Eclipse Java
    R�ponses: 3
    Dernier message: 30/09/2004, 11h22
  4. R�ponses: 2
    Dernier message: 15/05/2004, 18h33
  5. R�ponses: 2
    Dernier message: 27/02/2004, 13h47

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