2012-04-06 7 views
4

verknüpfen mag ich für mein Projekt oscpack (http://code.google.com/p/oscpack/) als eine statische Bibliothek verwenden, aber wenn ich versuche, es zu einem Beispiel hinzuzufügen, erhalte ich die Verknüpfung Fehler, zum Beispiel:eine statische Bibliothek zu meinem Projekt auf Visual Studio 2010

1> oscpackd.lib (UdpSocket.obj): Fehler LNK2019: nicht aufgelöstes externes Symbol __imp__socket @ 12 referenziert in der Funktion "public: __thiscall UdpSocket :: Implementierung :: Implementierung (void)" (?? 0Implementation @ UdpSocket @@ QAE @ XZ)

1> oscpackd.lib (UdpSocket.obj): Fehler LNK2019: nicht aufgelöstes externes Symbol __imp__closesocket @ 4 in Funktion referenziert „public: __thiscall UDPSocket :: Umsetzung :: ~ Implementation (void)“(?? 1Implementation @ UDPSocket @@ QAE @ XZ)

...

Im Grunde habe ich eine Lösung, die die oscpack.lib für den Aufbau, in dem Projekt I die entsprechenden .h und .cpp Dateien hinzugefügt.

Dann in der Beispiellösung, ich habe meine main.cpp hinzugefügt und dann habe ich aufgenommen (Eigenschaften> C/C++> Zusätzliche Include Verzeichnisse) den Ordner der Oscpack-Bibliothek, dann auf der Registerkarte Linker habe ich den Ordner Speicherort der libs und der Name der Bibliotheken.

Antwort

10

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt, und klicken Sie auf Eigenschaften> Linker> Eingabe> Zusätzliche Abhängigkeiten. Sie müssen ws2_32.lib hinzufügen.

Die VS-Projektvorlagen kümmern sich darum, dem Linker mitzuteilen, dass er die gängigsten Windows-Bibliotheken verknüpfen soll. Wie kernel32.lib können Sie kein Windows-Programm ohne es schreiben. Aber nicht Winsock, nicht jedes Programm wird einen Socket erstellen wollen. Das muss explizit hinzugefügt werden.

Sie finden diese Art von Abhängigkeiten aus dem MSDN-Artikel über, sagen wir, Closesocket(). Es ist am Ende des Artikels. Die Header Bit sagt Ihnen, was Sie brauchen #include, Sie haben das richtig. Das Library Bit sagt Ihnen, was Sie dem Linker mitteilen müssen, um zu verknüpfen. Nicht automatisch, Sie müssen sich selbst darum kümmern.

+1

Es funktionierte, obwohl ich auch Winmm.lib Dank! – JohnnyAce

0

Wollen Sie sagen, dass Sie die Bibliothek und main.cpp in separate Lösungen einfügen? Versuchen Sie, sie in die gleiche Lösung zu setzen und die Projektverweise entsprechend einzustellen.

Stellen Sie außerdem sicher, dass Sie die Änderungen an der richtigen Buildkonfiguration vornehmen. I. e. Wenn Sie im Debug-Modus erstellen, stellen Sie sicher, dass Sie den Lib-Namen und die Header-Verzeichnisse zur Debug-Konfiguration hinzugefügt haben.

2

Es gibt bereits richtige Antworten - Sie müssen eine Winsock-Bibliothek angeben, mit der eine Verknüpfung hergestellt werden soll. Aber das ist mein Lieblings-Weg so für kleine Projekte zu tun: #pragma comment(lib, "ws2_32.lib") Setzen Sie ihn einfach in Ihrem main.cpp (ANMERKUNG: MSVC spezifisch)

Verwandte Themen