mikrocontroller.net

Forum: PC-Programmierung mingw32 und socket


Autor: Lukas Tröllinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi!

ich würde gerne mit dem mingw32 sockets in c oder c++ programmieren.
jedoch bekomme ich immer den selben linker error wenn ich simple
beispieldateien kompiliere:

ll: undefined reference to 'socket@12'

kann mir jemand bei diesem problem helfen. ich würde gerne
applikationen für win xp schreiben.

vielen dank

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-lwsock32

Autor: Lukas Tröllinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi

-lwsock32 funktioniert nicht. ich werde vielleicht ein bisschen
konkreter mit meinem problem:

#include <stdio.h>
#include <windows.h>
#include <winsock.h>

int main(int argc, char *argv[])
{
  int sock_id=0;

  sock_id=socket(AF_INET, SOCK_STREAM, 0);

  printf("Nur zum Testen");

  return 0;
}

dieser code steht in einem c file. wenn ich die datei kompilieren lasse
mit mingw32-gcc.exe bekomme ich folgende meldung:

"ll: undefined reference to socket@12"

habe ich vielleicht die falschen header dateien oder gibt es da noch
andere -ls die ich berücksichtigen sollte.

luki

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der Linker sagt dir das er das Symbol socket@12 nicht finden kann.
Vielleicht hast du vergessen ihm die entsprechende Library anzugeben?

Autor: Christian Hartmann (armand)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast Du die header winsock.h auch eingebunden, da die socket() methode
kein #define ist, ist sie nicht global.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würde das Problem an einer nicht eingebundenen Headerdatei liegen, wäre
die Fehlermeldung eine andere.

Die Fehlermeldung aber ist eine des Linkers und besagt, daß dieser die
Funktion in keiner der verwendeten Libraries finden kann.

Möglicherweise liegt das Problem darin, daß hier eine zur verwendeten
Library inkompatible Aufrufkonvention verwendet wird - das dekorierte
Symbol socket@12 lässt erkennen, daß nicht die
C-Standard-Aufrufkonvention verwendet wird, dann nämlich hieße das
Symbol _socket.

(So jedenfalls sieht das bei MS-C-Compilern aus).

Existiert denn im LIB-Verzeichnis des Compilers überhaupt eine
Socket-Library?

Autor: Christian Hartmann (armand)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das stimmt doch gar nicht. Es kommt auf den Compiler an. Mein Compiler
für das XPS meldet bringt genau diese Meldung wenn ich eine includiert
header aus dem projekt ausbinde. Ich kann auch noch viele beispiele
nennen wo compiler veschiedenste meldungen bringen für gleiche probleme

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das halte ich für ein Missverständnis.

Würde dem Compiler die Deklaration der Funktion "socket" fehlen,
würde die Fehlermeldung entsprechendes aussagen.

Die hier zitierte Fehlermeldung ist aber eindeutig eine Fehlermeldung
des Linkers, nicht des Compilers.

Autor: Christian Hartmann (armand)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
woran siehst Du das? Ich lern immer gerne neu dazu:D

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das entnehme ich dem Präfix "ll" und der Tatsache, daß ein dekorierter
Name (eben socket@12) ausgegeben werden.

Autor: Christian Hartmann (armand)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay danke, ll hab ich für 11 als zeilenangabe gehalten

Autor: Lukas Tröllinger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hi

also schön langsam glaub ich, dass man mit dem mingw32 gar keine
sockets programmieren kann. als anhang habe seht ihr den compiler
output. vielleicht hilfts. normalerweise verwende ich die code::blocks
ide. aber bei der sieht mans nicht so schön. das programm ist das
gleiche geblieben.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Screenshot zeigt, daß Du offensichtlich keinen der Dir hier
gegebenen Ratschläge auch nur gelesen zu haben scheinst - wo bitte ist
in Deiner Kommandozeile des gcc-Aufrufs der Hinweis, daß mit der
Library zu linken ist, die die Funktion socket enthält?


Desweiteren kann man den Inhalt von Konsolenfenstern auch als TEXT in
die Zwischenablage kopieren ... da ist kein Screenshot für
erforderlich.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.