SFML 网络错误:链接时未定义的引用

SFML Networking Error: undefined references des when linking

本文关键字:未定义 引用 链接 网络 错误 SFML      更新时间:2023-10-16

我最近开始学习SFML,但是当我进入网络部分时,我总是收到很多错误:

objReleasemain.o:main.cpp:(.text$_ZN2sf11TcpListenerD1Ev[__ZN2sf11TcpListenerD1Ev]+0x1): undefined reference to `_imp___ZTVN2sf11TcpListenerE'
objReleasemain.o:main.cpp:(.text$_ZN2sf11TcpListenerD1Ev[__ZN2sf11TcpListenerD1Ev]+0xb): undefined reference to `_imp___ZN2sf6SocketD2Ev'
objReleasemain.o:main.cpp:(.text$_ZN2sf9TcpSocketD1Ev[__ZN2sf9TcpSocketD1Ev]+0x1): undefined reference to `_imp___ZTVN2sf9TcpSocketE'
objReleasemain.o:main.cpp:(.text$_ZN2sf9TcpSocketD1Ev[__ZN2sf9TcpSocketD1Ev]+0x25): undefined reference to `_imp___ZN2sf6SocketD2Ev'
objReleasemain.o:main.cpp:(.text$_ZN2sf9TcpSocketD1Ev[__ZN2sf9TcpSocketD1Ev]+0x2f): undefined reference to `_imp___ZN2sf6SocketD2Ev'
objReleasemain.o:main.cpp:(.text$_ZN2sf11TcpListenerD0Ev[__ZN2sf11TcpListenerD0Ev]+0x7): undefined reference to `_imp___ZTVN2sf11TcpListenerE'
objReleasemain.o:main.cpp:(.text$_ZN2sf11TcpListenerD0Ev[__ZN2sf11TcpListenerD0Ev]+0x12): undefined reference to `_imp___ZN2sf6SocketD2Ev'
objReleasemain.o:main.cpp:(.text$_ZN2sf9TcpSocketD0Ev[__ZN2sf9TcpSocketD0Ev]+0x7): undefined reference to `_imp___ZTVN2sf9TcpSocketE'
objReleasemain.o:main.cpp:(.text$_ZN2sf9TcpSocketD0Ev[__ZN2sf9TcpSocketD0Ev]+0x23): undefined reference to `_imp___ZN2sf6SocketD2Ev'
objReleasemain.o:main.cpp:(.text.startup+0x60): undefined reference to `_imp___ZN2sf9IpAddress15getLocalAddressEv'
objReleasemain.o:main.cpp:(.text.startup+0x72): undefined reference to `_imp___ZN2sf9TcpSocketC1Ev'
objReleasemain.o:main.cpp:(.text.startup+0x129): undefined reference to `_imp___ZN2sf9TcpSocket4sendEPKvj'
objReleasemain.o:main.cpp:(.text.startup+0x159): undefined reference to `_imp___ZN2sf9TcpSocket7receiveEPvjRj'
objReleasemain.o:main.cpp:(.text.startup+0x1f7): undefined reference to `_imp___ZN2sf9TcpSocket7connectERKNS_9IpAddressEtNS_4TimeE'
objReleasemain.o:main.cpp:(.text.startup+0x226): undefined reference to `_imp___ZN2sf11TcpListenerC1Ev'
objReleasemain.o:main.cpp:(.text.startup+0x243): undefined reference to `_imp___ZN2sf11TcpListener6listenEt'
objReleasemain.o:main.cpp:(.text.startup+0x259): undefined reference to `_imp___ZN2sf11TcpListener6acceptERNS_9TcpSocketE'

我正在使用代码块,编译器参数是:

mingw32-g++.exe -LC:UsersJustinAppDataRoamingCodeBlocksSFML-2.2lib -o "binReleaseSFML Test.exe" objReleasemain.o  -s  -lsfml-graphics -lsfml-window -lsfml-system

这仅在我使用网络功能时发生,没有其他功能(但我没有尝试过音频)。

提前谢谢。

编辑:这是我的代码:

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <SFML/Network.hpp>
using namespace sf;
#include <iostream>
#include <string>
#define cout std::cout
#define endl std::endl
int main(){
    IpAddress ip = IpAddress::getLocalAddress();
    TcpSocket socket;
    char connectionType, mode;
    char buffer[2000];
    std::size_t recieved;
    std::string text = "Connected to: ";
    cout << "Enter (s) for server; Enter (c) for client: ";
    std::cin >> connectionType;
    if(connectionType == 's'){
        TcpListener listener;
        listener.listen(123456);
        listener.accept(socket);
        text += "Server";
    }else if(connectionType == 'c'){
        socket.connect(ip, 123456);
        text += "Client";
    }else{
        cout << "ERROR: Wrong Connection Type";
    }
    socket.send(text.c_str(), text.length());
    socket.receive(buffer, sizeof(buffer), recieved);
    cout << buffer << endl;
    system("pause");
}

与网络模块的链接:

 mingw32-g++.exe -LC:UsersJustinAppDataRoamingCodeBlocksSFML-2.2lib -o "binReleaseSFML Test.exe" objReleasemain.o  -s  -lsfml-graphics -lsfml-window -lsfml-system -lsfml-network