Probleme beim Einbinden von Bibliotheken



  • Hallo,

    ich habe irgendwie Probleme beim Einbinden von Bibliotheken in Visual Studio C++ 2008 Express Edition.

    Hatte das erste problem mit der Curl Bibliothek, siehe http://www.c-plusplus.net/forum/viewtopic-var-t-is-240086.html

    Gut, dann wollte ich, weil mir nur noch der teil für den Abschluss meines Programms fehlt, es mit WinSock realisieren. (Es geht darum ne Datei von einer fixen http adresse downzuloaden)

    Hab also das Microsoft Windows SDK 6.1 installiert.
    Erstes Problem war, dass er ne .lib nicht finden konnte. Kurz gegoogelt, den Pfad wo sie bei VC++ 2008 verschoben worden ist unter Bibliotheken eingetragen, und er findet sie.
    Dann noch bei den Projekteigenschaften dem Linke die Zusatzbibliothek ws2_32.lib angegeben, doch er gibt mir immer noch Fehler aus.

    1>main.obj : error LNK2028: Nicht aufgelöstes Token (0A000276) ""extern "C" int __stdcall WSAStartup(unsigned short,struct WSAData *)" (?WSAStartup@@$$J18YGHGPAUWSAData@@@Z)", auf das in Funktion ""int __cdecl main(void)" (?main@@$$HYAHXZ)" verwiesen wird.
    1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __stdcall WSAStartup(unsigned short,struct WSAData *)" (?WSAStartup@@$$J18YGHGPAUWSAData@@@Z)" in Funktion ""int __cdecl main(void)" (?main@@$$HYAHXZ)".
    1>C:\Users\Lukas\Documents\Visual Studio 2008\Projects\http test\Debug\http test.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.

    Der Code der den Fehler verursacht:

    #include <iostream>
    #include <winsock2.h>
    
    int main(){
    
    	LPWSADATA wsa;
    
    	WSAStartup(MAKEWORD(2,0),wsa);
    
    	return 0;
    };
    

    Ich weis echt nicht mehr was ich machen soll. Da es ein ähnliches Problem auch mit der Curl Bibliothek gab, vermute ich dass ich irgendwas falsch mache.

    Grüße



  • Also das Programm lässt sich eigentlich fehlerfrei kompilieren, wenn man den Header (oder windows.h) inkludiert und die lib in den Projekteinstellungen einträgt. Hast du vielleicht mehrere Versionen der lib auf deinem Rechner oder sowas?



  • Nein, habe ich nicht. Nach unzähligen Versuchen hab ich es hinbekommen, dass er die Libs erkennt wenn man sie über #pragma comment(lib,"Urlmon.lib") einbindet. Wenn ich die lib direkt bei Projekteigenschaften einbinde funktioniert es nicht.


  • Mod

    Gemäß Doku http://msdn.microsoft.com/en-us/library/ms742213(VS.85).aspx benötigt WSAStartup die Lib Ws2_32.lib! Urlmon hat damit nichts zu tun.

    Wenn es bei der Angabe in den Projekteinstellungen niocht klappt, dan hast Du einen Fehler gemacht, oder die falsche Lib angegeben.

    Grundsätzlich sind #prgama comment(lib,"mylib") Einträge flexibler nach meiner Meinung.


Log in to reply