Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C++][API]

Sujet résolu
Anonyme
    16 février 2006 à 19:32:14

    Bonjour,

    Je débute en API et je voulais savoir si ce petit code que j'ai trouvé pouvais fonctionner car j'ai une erreur à la compilation.

    Merci

    #include <windows.h>

    int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR Arguments, int nCmdShow)
    {
            MessageBox(NULL, "Coucou" , "Message" , MB_OK);
            return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2006 à 20:01:14

      Quelle erreur ?

      (détail, c'est pas du code C++, l'API Win32 est une api C)

      a+
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        16 février 2006 à 20:19:57

        Ah je croyais que c'était en C++ car ya beaucoup de choses qui me font pensé à des classes ex: -> ::

        J'ai donc changé mon extention en .c et voici mon erreur (VCPP Express)

        ------ Build started: Project: Window, Configuration: Debug Win32 ------
        Linking...
        main.obj : error LNK2019: unresolved external symbol __imp__MessageBoxA@16 referenced in function _WinMain@16
        C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Window\Debug\Window.exe : fatal error LNK1120: 1 unresolved externals
        Build log was saved at "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\Window\Window\Debug\BuildLog.htm"
        Window - 2 error(s), 0 warning(s)
        ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

        Visiblement c'est au moment du link mais je ne comprends pas le problème.

        Merci
        • Partager sur Facebook
        • Partager sur Twitter
          16 février 2006 à 21:23:48

          Ben là, j'ai pas de windows pour tester mais tu as bien lié avec User32.lib ?

          a+
          • Partager sur Facebook
          • Partager sur Twitter
            16 février 2006 à 21:36:45

            ??? As-tu lu le cours sur les structures ?

            Le -> n'a rien de C++, il indique qu'on accède au contenu d'une structure via un pointeur.
            • Partager sur Facebook
            • Partager sur Twitter

            If you'd like to join us, read "How do we work at OpenClassrooms"! :)

            Anonyme
              18 février 2006 à 12:26:37

              Non j'avais justement pas fini de le lire.

              Je pensais que c'était de la POO car pour moi -> à toujours désigné l'accés à un objet comme dans PHP que j'utilise énormement.

              J'aimerais tout de même avoir des présisions sur le language et la meilleure mannière de créer des fenêtres.
              Par exemple en Java on peut faire des fenêtres, mais alors on utilise aussi la librairie windows.h? Et pour finir, si je cré un projet WinForm, j'aurais la même chose qu'à partir d'un projet vide? La même mannière d'appeler les fonctions etc...?

              Merci pour vos réponses.
              • Partager sur Facebook
              • Partager sur Twitter
                18 février 2006 à 12:35:52

                non en java on utilise une librairie graphique portable, en général Wings il me semble.

                Plutôt que de faire de la WinAPI, tu ferais mieux d'utiliser des trucs plus portables (par exempe GTK, si tu veux faire du C, ou Qt (ou WxWidgets) si tu fais du C++).

                Si tu peux te contenter d'un truc simple (mais pas forcement over-complet, en tout cas pas une usine à gaz) regarde des bindings tcl/tk (il y en a pour ocaml, et c'est franchement pas mal : pas compliqué, suffisant pour les widgets, etc...).
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  20 février 2006 à 20:22:43

                  Nan je m'en moque un peu de la portabilité pour l'instant. Les applications que je serais amené à developper seront déployées dans une architecture windows.

                  Mais je vais apprendre surtout WxWidgets, le nom me plait bien :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 février 2006 à 23:16:48

                    Bah en général, la portabilité c'est avant tout le signe que la lib a été bien concue, bien pensée, qu'elle a des impératifs sérieux, etc...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 février 2006 à 0:25:16

                      Et pis ce langage a été fait à la base, pour être portable. Autant relever le défi jusqu'au bout!
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        21 février 2006 à 20:56:44

                        Je m'inquiète car ce code :

                        #include <iostream>

                        using namespace std;

                        int main()
                        {
                            cout << "Hello World!\n";
                        }


                        Ne veux pas se compiler.
                        J'ai l'erreur :

                        ------ Build started: Project: winDial, Configuration: Debug Win32 ------
                        Compiling...
                        main.cpp
                        Compiling manifest to resources...
                        Linking...
                        main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<char,struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char const *)" (__imp_??$?6DU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z) referenced in function _main
                        C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\winDial\Debug\winDial.exe : fatal error LNK1120: 1 unresolved externals
                        Build log was saved at "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\winDial\winDial\Debug\BuildLog.htm"
                        winDial - 2 error(s), 0 warning(s)
                        ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


                        Je ne sais pas d'où ça vient. Merci pour votre aide.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 février 2006 à 21:09:48

                          Bah c'est tout simple c'est écrit que tu a créer un projet win32 alors que ce code est fait pour console.

                          EDIT: concernant son premier code il na seulement pas définie le handle et créer sa fenetre et créer sa boucle de message.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 février 2006 à 21:34:50

                            Je suis pas spécialiste de VC++ (un compilateur décent), mais ça a l'air d'être ça.
                            Quant à ton premier code, on dirait que tu as oublié des libs ou un truc comme ça.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              22 février 2006 à 15:40:03

                              Nan j'ai bien créé un nouveau projet pour console comme l'expliquais un tuto.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                23 février 2006 à 19:44:40

                                Quelqu'un à une idée? Lorsque je fais cout <<< il me dit qu'il ne connais pas pourtant j'ai bien inclus iostream.h

                                Merci de votre aide
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  23 février 2006 à 21:22:44

                                  salut,tu a bien mit using namespace std;?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 février 2006 à 5:40:14

                                    Normalement quand on a une fonction renvoyant un int, on renvoie un int.... Donc rajoute un return 0; à la fin...

                                    Et juste au cas où tu poses la question, ça te prend une ligne d'extra à la fin et c'est <iostream> et non <iostream.h> (sauf dans Code::blocks je crois)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      24 février 2006 à 14:39:19

                                      Avec le code :

                                      #include <iostream>

                                      int main()
                                      {
                                              cout << "Hello\n";
                                              return 0;
                                      }


                                      J'ai :

                                      ------ Build started: Project: HelloWorld, Configuration: Debug Win32 ------
                                      Compiling...
                                      main.cpp
                                      c:\documents and settings\administrator\my documents\visual studio 2005\projects\helloworld\helloworld\main.cpp(5) : error C2065: 'cout' : undeclared identifier
                                      Build log was saved at "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\HelloWorld\HelloWorld\Debug\BuildLog.htm"
                                      HelloWorld - 1 error(s), 0 warning(s)
                                      ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


                                      Avec le code :


                                      #include <iostream.h>

                                      int main()
                                      {
                                              cout << "Hello\n";
                                              return 0;
                                      }


                                      J'ai :

                                      ------ Build started: Project: HelloWorld, Configuration: Debug Win32 ------
                                      Compiling...
                                      main.cpp
                                      Linking...
                                      LINK : fatal error LNK1104: cannot open file 'msvcirtd.lib'
                                      Build log was saved at "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\HelloWorld\HelloWorld\Debug\BuildLog.htm"
                                      HelloWorld - 1 error(s), 0 warning(s)
                                      ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


                                      J'ai installé les librairie SDK Server 2003 pour mon Visual Studio C++ 2005 Express et j'ai la lib msvcirtd.lib dans un dossier I64 ou AMD64 ce qui biensûr pose problème pour un i386

                                      Merci pour votre aide.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        25 février 2006 à 11:25:53

                                        Toujours personne saurait m'aider?

                                        J'avais prévu ce Samedi pour travailler dessus et je suis bloqué.

                                        Merci de votre aide

                                        Edit: j'ai trouvé réponse dans la FAQ Dev.com http://c.developpez.com/faq/cpp/?page=console
                                        using namespace std;
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          25 février 2006 à 13:50:12

                                          Citation : Ultiny

                                          Toujours personne saurait m'aider?

                                          J'avais prévu ce Samedi pour travailler dessus et je suis bloqué.

                                          Merci de votre aide

                                          Edit: j'ai trouvé réponse dans la FAQ Dev.com http://c.developpez.com/faq/cpp/?page=console
                                          using namespace std;


                                          C'est pas ce que javait dit plus haut?
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Anonyme
                                            25 février 2006 à 14:30:14

                                            Citation : Djeepy46234

                                            Et juste au cas où tu poses la question, ça te prend une ligne d'extra à la fin et c'est <iostream> et non <iostream.h> (sauf dans Code::blocks je crois)


                                            Tien c'est nouveau code::block ne rspecte pas le standart c++ ?
                                            A mais non biensur ils on créer une vertion spéciale de c++ où pour inclure les classes iostream on utilise le nom d'inclusion des header c, mais biensur... :colere:

                                            Bon, il faudrait lire els reponsses qu'on te donne.
                                            Si sa marche tj pas, vérifi que tu a bien le sdk, que tu a les bonnes libs de lier.
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            [C++][API]

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                            • Editeur
                                            • Markdown