WSAStartup(MAKEWORD(2,2),&wsa); geht nicht???



  • hallo freunde!

    Bei mit geht unter VC6 diese WSAStartup function nicht. Ich habe schon alles erdenkliche probiert, kann mir einer sagen was da falsch ist? Ich glaube es liegt an der Version die man dem Makro MAKEWORD übergibt.....

    #include <winsock2.h>
    #include <stdio.h>
    
    int startWinsock(void)
    
    {
      WSADATA wsa;
    
      return WSAStartup(MAKEWORD(2,2),&wsa);
    }
    

    Fehlermeldungen:
    main.obj : error LNK2001: unresolved external symbol __imp__WSAStartup@8
    LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
    Debug/wsaTest.exe : fatal error LNK1120: 2 unresolved externals

    danke schon mal l00P



  • Ws2_32.lib in den Linkereinstellungen hinzufügen



  • -> schrieb:

    Ws2_32.lib in den Linkereinstellungen hinzufügen

    ...hab ich schon, geht trotzdem nicht, ausser ich habs falsch gemacht:
    Projekte -> Settings ->Link -> Object/Library/Modules/ Ws2_32.lib eintragen zu den anderen ohne "," oder ";"

    stimmt das?
    Wenn ja muß noch was anderes nicht stimmen -> geht nämlich nicht...



  • Evtl. muss du noch windows.h einbinden



  • ich glaube dem linker sind die header dateien egal:]

    versuch mal:

    #pragma comment(lib,"wsock32")
    


  • Es ist aber verwunderlich, dass er auch WinMain nicht mehr auflösen kann 😕
    Hast du vielleicht sonst noch was geändert - z.B. Libs aus der "Link-Liste" gelöscht 🙄



  • Hast du vielleicht ein Konsolenproject erstellt?



  • Oder ist der obige Code gar kein Ausschnitt, sondern die gesamte Datei? 🙄



  • nein nein das ist nicht die gesamte datei, sonst dürfte alles stimmen, ich habs in einem mfc Projekt laufen lassen wollen, ging aber nicht, dann hab ich s nach einem tutorial in eine Konsole gesteckt, die machen das dort auch.

    Wenn ich #pragma comment(lib,"wsock32") einbinde geht´s auch nicht und wenn ich die windows.h dazugebe bekomme ich sogar um die 60 Fehler....



  • Wenn du WinMain verwendest musst du aber eine Win32-Anwendung und keine Konsolen-Anwendung erstellen 😉



  • Ah... werd ich gleich umstellen 🙂
    danke erstmal
    l00P



  • ...aber ich verwende ja gar kein WinMain denke ich oder?

    Also das ist der ganze Code in einer Konsolenanwendung:

    #include <winsock2.h>
    #include <stdio.h>
    #include "main.h"
    
    int main()
    
    {
      long rc;
    
      rc=startWinsock();
    
      if(rc!=0)
    
      {
        printf("Fehler: startWinsock, fehler code: %d\n",rc);
        return 1;
      }
      else
      {
        printf("Winsock gestartet!\n");
      }
    
      return 0;
    }
    
    int startWinsock(void)
    
    {
      WSADATA wsa;
    
      return WSAStartup(MAKEWORD(2,2),&wsa);
    }
    


  • Dann ist es wohl gerade anders herum 😃 :
    Du hast anstelle einer Konsolen-Anwendung eine Win32-Anwendung erstellt 🙄

    Die Lib hast du ja jetzt gelinkt, oder? Was hast du in main.h stehen? Was für Fehler bekommst du noch?



  • Also aktuell habe ich eine Konsolenanwendung erstellt mit diesem obigen main.cpp. Der komplette code steht oben. In der main.h steht nur
    int startWinsock(void); sonst nichts.

    Die "Ws2_32.lib" habe ich unter Projects->settings->link->Objects/modules.... dazugeschrieben.

    Folgende Fehler kommen:

    -------------------Configuration: wsaTest - Win32 Debug--------------------
    Linking...
    LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
    Debug/wsaTest.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
    
    wsaTest.exe - 2 error(s), 0 warning(s)
    


  • Du musst aus der main() eine WinMain() machen.



  • wenn ich draus eine winmain() mache kommen folgende fehler:

    --------------------Configuration: wsaTest - Win32 Debug--------------------
    Compiling...
    main.cpp
    C:\Wuff\siesta\thesieata\wsaTest\main.cpp(9) : warning C4007: 'WinMain' : must be '__stdcall'
    C:\Wuff\siesta\thesieata\wsaTest\main.cpp(9) : error C2731: 'WinMain' : function cannot be overloaded
            C:\Wuff\siesta\thesieata\wsaTest\main.cpp(7) : see declaration of 'WinMain'
    Error executing cl.exe.
    
    wsaTest.exe - 1 error(s), 1 warning(s)
    


  • Bei einer Konsolen-Anwendung ist aber main eigentlich schon richtig! WinMain in einer Win32-Anwendung sieht so aus:

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    

    Was steht bei dir unter Projekt - Einstellungen - Linker im Feld Projekt Optionen bei subsytem?
    /subsystem:console oder /subsystem:windows



  • flenders schrieb:

    Bei einer Konsolen-Anwendung ist aber main eigentlich schon richtig! WinMain in einer Win32-Anwendung sieht so aus:

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    

    Was steht bei dir unter Projekt - Einstellungen - Linker im Feld Projekt Optionen bei subsytem?
    /subsystem:console oder /subsystem:windows

    ...da steht: /subsystem:windows /incremental:yes



  • Dann hast du eine Win32-Anwendung erstellt, oder etwas an den Einstellungen geändert 😉

    Also entweder auf subsystem:console ändern oder ein neues Projekt erstellen und Konsolen-Anwendung auswählen und den Quelltext rumkopieren 🙂



  • hurra es geht...so ein dummer fehler!!! ärger 😡

    Hab tatsächlich eine win32 Anwendung erstellt...

    Danke für die hilfe
    l00P


Anmelden zum Antworten