wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 3

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» main et WinMain
Conversation : main et WinMain
10-11-2007 15:44:13  main et WinMain #1
blend (Membre)
Inscrit le : 07-10-2007
Messages: 129
Snippets: 0
Tutoriels: 0
Hors ligne
Salut,

Depuis un petit moment je fait un moteur 3D (en DLL), très simpliste (de toute façon je peux pas faire mieux ^^ ), pour me détendre.
Pour ne pas dépendre de la SDL, SFML, wxWidgets ou autres pour le fenêtrage, je touche donc à la WinApi et à la Xlib.

Et j'arrive alors à un problème: comment faire pour garder le main portable? D'un côté je dois utiliser WinMain et de l'autre le main traditionnel.

J'ai essayé de me bricoler un truc: dans la version Win de mon moteur je met ceci

Code Cpp:

#ifdef _WIN32
    #include <windows.h>
    extern  int main(int argc, char* argv[]);
 
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
        return main(__argc, __argv);
    }
#endif


J'utilise alors dans les programme qui utilisent ma lib un main sous la forme main(int argc, char** argv)

Mais ça n'a pas l'air de marcher :( ...

merci pour votre aide.

Rien ne vaut la 2D pour éviter les problèmes de profondeur.
10-11-2007 16:49:56  Re: main et WinMain #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
blend:

Code Cpp:

#ifdef _WIN32
    #include <windows.h>
    extern  int main(int argc, char* argv[]);
 
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
        return main(__argc, __argv);
    }
#endif
Gloups ! :/
Il n'est pas possible d'avoir, dans le même exécutable, un main et un WinMain.

Code Cpp:

#ifdef _WIN32
    #include <windows.h>
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {
        return main(__argc, __argv);
    }
#else
    extern  int main(int argc, char* argv[]);
#endif


Mais je ne suis même pas sûr que ça marche : à vérifier

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
10-11-2007 18:14:52  Re: main et WinMain #3
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Passe par une class comme wx sinon

Itérer est humain, récurser est divin
10-11-2007 18:34:51  Re: main et WinMain #4
blend (Membre)
Inscrit le : 07-10-2007
Messages: 129
Snippets: 0
Tutoriels: 0
Hors ligne
@Xaviou:marche pô :'(
Un aveu: ce truc, je l'avais trouvé dans le code source de la SFML ^^...

@xxlTux: Et comment je creé la classe? Je veux pas de macros foireuses ^^!

@all: Je veux faire comme Qt fait ou même la SDL, la SFML etc: un main en main(int...) alors que derrière ils utilisent tous un WinMain sous Windows, et comme j'y connais rien ^^...

Rien ne vaut la 2D pour éviter les problèmes de profondeur.
10-11-2007 18:36:35  Re: main et WinMain #5
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Les macros c'est pour la lancer lol

Itérer est humain, récurser est divin
10-11-2007 18:37:27  Re: main et WinMain #6
blend (Membre)
Inscrit le : 07-10-2007
Messages: 129
Snippets: 0
Tutoriels: 0
Hors ligne
Justement: j'en veux pas XD

Rien ne vaut la 2D pour éviter les problèmes de profondeur.
10-11-2007 18:39:52  Re: main et WinMain #7
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Sinon tu fais une fonction _main qui est lancé par main ou WinMain et qui a tj le meme prototype

Dernière modification par xxltux (10-11-2007 18:40:05)


Itérer est humain, récurser est divin
10-11-2007 18:43:42  Re: main et WinMain #8
blend (Membre)
Inscrit le : 07-10-2007
Messages: 129
Snippets: 0
Tutoriels: 0
Hors ligne
C'est ce à quoi je pensais ^^...
Mais j'ai un petit problème de defines :(

Rien ne vaut la 2D pour éviter les problèmes de profondeur.
10-11-2007 19:01:00  Re: main et WinMain #9
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Par contre met peut etre un nom plus en rapport avec ta lib, par ex malibMain

Itérer est humain, récurser est divin
10-11-2007 20:08:44  Re: main et WinMain #10
blend (Membre)
Inscrit le : 07-10-2007
Messages: 129
Snippets: 0
Tutoriels: 0
Hors ligne
Je vais voir un petit truc, si ça marche je n'aurais même plus besoin de me tracacer avec tout ça ^^
----------
C'est bon, ça marche impec ^^: vive GetModuleHandle() !

Dernière modification par blend (10-11-2007 20:25:54)


Rien ne vaut la 2D pour éviter les problèmes de profondeur.
10-11-2007 20:47:32  Re: main et WinMain #11
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Heu si je me preocuperai quand meme de ce genre de truc lol En gros si tu as une fonction intermediaire, elle peux initialiser ta lib par exemple

Itérer est humain, récurser est divin
11-11-2007 10:40:57  Re: main et WinMain #12
blend (Membre)
Inscrit le : 07-10-2007
Messages: 129
Snippets: 0
Tutoriels: 0
Hors ligne
Ma lib' n'a aucunement besoin d'être initialisée ;)

Rien ne vaut la 2D pour éviter les problèmes de profondeur.
11-11-2007 14:04:30  Re: main et WinMain #13
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Et tu la portes dans quel langage? lol

Itérer est humain, récurser est divin
11-11-2007 19:22:07  Re: main et WinMain #14
blend (Membre)
Inscrit le : 07-10-2007
Messages: 129
Snippets: 0
Tutoriels: 0
Hors ligne
Aucun ^^. J'ai eu un moment de délire ^^

Rien ne vaut la 2D pour éviter les problèmes de profondeur.
12-11-2007 10:24:34  Re: main et WinMain #15
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Un de tes nombreux moments de délire lol

Itérer est humain, récurser est divin
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» main et WinMain