startWinsock(void) - Nicht aufgelöstes trotz Ws2_32.lib



  • Hallo zusammen,

    ich verzweifel gerade mal wieder am Linker.

    VS 2005 / Win XP

    ich habe mir ein einfaches socket programm geschrieben das auch ohne probleme kompeliert.
    Die relevanten Zeilen:

    #include <windows.h>
    #include <Winsock.h>
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <iostream>
    
    #include "socket_client.h"
    
    //Prototypen
    #pragma comment (lib, "Ws2_32.lib") 
    int startWinsock(void);
    
    using namespace std;
    
    Socket_Client *MyClient ;
    
    int main(int argc, char *argv[])
    {
    	long rc;
    
    	printf("Start: ok ich beginne bei  %d\n", 1 );
    
    	rc=startWinsock();
    
    .......
    ...
    .
    

    Nun wollte ich dieses Programm auch in meinem opengl Spiel verwenden.
    Daraus sind die betreffenden Zeilen:

    //#include <gl.h>
    #include <windows.h>
    #include <Winsock.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <string.h>
    #include <glew.h>
    #include <glut.h>
    #include <math.h>
    #include <ctime>
    #include <iostream>
    #include <sstream>
    #include <iomanip>
    #include <fstream> 
    //#include <IR/irrKlang.h>
    
    #include "CListe.h"
    #include "Objekt.h"
    #include "Raum.h"
    #include "Folder.h"
    #include "File.h"
    #include "Timer.h"
    
    #include "socket_client.h"
    
    //Prototypen
    #pragma comment (lib, "Ws2_32.lib") 
    int startWinsock(void);
    
    using namespace std;
    
    Socket_Client *MyClient ;
    
    ............
    ............
    ............
    
    int main (int argc, char **argv) 
    {
    	long rc;
    
    	printf("Start: ok ich beginne bei  %d\n", 1 );
    
    	rc=startWinsock();
    .......
    ...
    .
    

    Aber das Project vom 2-ten Code wirft immer den alt-bekannten Fehler aus:
    error LNK2001: Nicht aufgelöstes externes Symbol ""int __cdecl startWinsock(void)" (?startWinsock@@YAHXZ)".

    Ich hab auch schon zusätzlich in den Linker Eingaben 'ws2_32.lib' eingefügt aber nichts hilft.
    Für mich sehen beide Projekte gleich aus, gibt es da irgendwelche VS2005 Einstellungen die ich vielleicht noch umstellen müsste ?

    Vielen Dank im Voraus !!!

    UWI



  • mach mal als main:

    int WINAPI WinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPSTR lpCmdLine,
                       int nCmdShow);
    

    Ich weiß nicht, ob es daran liegt, aber ich meine mich daran erinnern zu können, dass ich auch mal ein nicht aufgelöstes externes symbol gehabt habe, das dies benötigte.



  • hi zuckerlie,

    danke für die Antwort, aber das leider nichts gebracht.
    der fehler bleibt.
    Aber er wäre ja auch komisch wen es in
    einem Projekt klappt und im anderen nicht.

    ich verstehe es nicht..

    ich hoffe jemand hat noch eine idee.

    uwi



  • Eigentlich steht das doch in deinem Code als Kommentar ("Prototypen"), du musst die Funktion auch definieren.
    Kurze Suche bei google: Aha, du suchst

    int startWinsock()
    {
      WSADATA wsa;
    
      return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    

    aus diesem Tutorial.



  • DANKE ,

    ich ********, ich bin sowas von ********* !!!

    in dem moment wo du geschrieben hast hab ich im ersten projekt mal ganz nach unten gescrolled, und das steht NATÜRLICH:

    int startWinsock(void)
    {
      WSADATA wsa;
    
      return WSAStartup(MAKEWORD(2,2),&wsa);
    }
    

    Bin wohl echt an dem Punkt wo ich mal ne Pause machen sollte, wenn mein Kopf das schon nichtmehr alleine hinbekommt.

    SORRY und DANKE

    UWI



  • Also entschuldigen brauchst du dich dafür wirklich nicht 😃



  • #pragma comment (lib, "ws2_32.lib")
    

    statt

    #pragma comment (lib, "Ws2_32.lib")
    

    könnte das der Fehler sein...kleines w statt großes W?

    Habe es nicht probiert...

    Gruß


Anmelden zum Antworten