Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

10.05.2015, 20:10

SFML Netzwerk - undefined reference to cerr()

Hi,
Ich probiere in SFML ein wenig mit Connections rum aber ich bekomme folgende fehlermeldung vom compiler

Zitat

in function 'Zn2sf9TcpSocket4sendEPKvj'
undefined reference to sf::err()
in function 'Zn2sf7TcpSocket4receiveEPvjRj'
undefined reference to sf::err()
Den linker habe ich bereits gelinkt
hier ist der code, auch wenn ich nicht glaube das der was mit dem problem zutun hat:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <SFML/Network.hpp>

using namespace std;

int main()
{
    sf::TcpSocket socket;
    sf::Socket::Status status = socket.connect("127.0.0.1", 53000);
    if(status == sf::Socket::Done)
    {
        cout << "Connection Fehlgeschlagen !" << endl;
    }
    return 0;
}


ich richte mich hiernacht :this:
hoffe jemand kann helfen.
mfg. eronor

//edit
GNU Compiler
gelinkte libraries:
sfml-audio-s-d
sfml-graphics-s-d
sfml-window-s-d
sfml-system-s-d
sfml-network-s-d

2

13.05.2015, 16:15

das problem ist weiterhin aktuell

Tobiking

1x Rätselkönig

  • Private Nachricht senden

3

13.05.2015, 16:23

Es könnte die Link Reihenfolge sein. Ich würde vermuten sf:err steckt in der system und müsste daher als letztes stehen.

4

13.05.2015, 16:26

danke dir vielmals, hat funktioniert.
Jetzt weiß ich auch das die reihenfolge von bedeutung ist :)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

13.05.2015, 18:15

Echt, es gibt Link-Reihenfolgen? Das is mir neu. Um welchen Compiler geht's hier?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

6

13.05.2015, 18:44

Ich selbst hatte das Problem zwar noch nicht, aber ich habe mal gelesen, dass die Reihenfolge beim statischen Linken für GCC eine Rolle spielt.

Würde jedenfalls zu den Angaben in eronors Edit passen:

Zitat von »eronor«

//edit
GNU Compiler
gelinkte libraries:
sfml-audio-s-d
sfml-graphics-s-d
sfml-window-s-d
sfml-system-s-d
sfml-network-s-d

Allerdings habe ich zu diesem Verhalten bisher nichts "Offizielles" gefunden; nur Posts auf stackoverflow und Ähnliches (besonders akribisch habe ich aber auch nicht gesucht).

Tobiking

1x Rätselkönig

  • Private Nachricht senden

7

13.05.2015, 21:56

Allerdings habe ich zu diesem Verhalten bisher nichts "Offizielles" gefunden; nur Posts auf stackoverflow und Ähnliches (besonders akribisch habe ich aber auch nicht gesucht).

Es steht etwas umständlich in der Doku:

Zitat von »"https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html"«


-l library
...
It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, ‘foo.o -lz bar.o’ searches library ‘z’ after file foo.o but before bar.o. If bar.o refers to functions in ‘z’, those functions may not be loaded.
...
The linker handles an archive file by scanning through it for members which define symbols that have so far been referenced but not defined.

Beim Linken von statischen Libs werden nur die bisher verwendeten Referenzen aufgelöst. Wenn nach dem Linken einer Lib zusätzliche Referenzen dazu kommen werden diese nicht nachträglich aufgelöst. Das wird aus Performance Gründen gemacht, aber für zyklische Abhängigkeiten lässt sich mit --start-group/--end-group veranlassen das so lange die Libs durchlaufen werden bis die Referenzen durch sind.

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

8

14.05.2015, 00:47

Link Reihenfolge spielt eine wichtige Rolle mit GCC basierten Compilern, auch für Shared Libraries als auch für die eigenen Objekt Dateien.
Z.B. würde g++ -lsfml-system -lsfml-window main.cpp zu Problemen führen, da die Symbole in main.cpp nicht aufgelöst werden können.

Visual Studio verwendet da andere Techniken und somit spielt hier die Reihenfolge eigentlich nie eine Rolle.

Ach ja und wenn du neuere Version von SFML, d.h. SFML 2.2+ statisch linkst, musst du auch alle Abhängigkeiten von SFML linken. Siehe die offizielle Dokumentation.
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

Werbeanzeige