【发布时间】:2017-11-10 14:03:11
【问题描述】:
所以我正在尝试编写一些与网络相关的代码,特别是使用 SFML 的端口扫描器。我正在运行 VS 2017 并下载了 2015 年的 SFML 版本,但是人们说这应该适用于 2017 年。
到目前为止,我尝试查看该库是否正常工作的演示代码是:
#include <iostream>
#include <SFML/Network.hpp>
#include <string>
using namespace std;
bool port_is_open(const string& address, int port) {
sf::TcpSocket socket;
bool open = (socket.connect(sf::IpAddress(address), port) == sf::Socket::Done);
socket.disconnect();
return open;
}
int main() {
cout << "Enter IP number: ";
string address;
cin >> address;
cout << "Enter Port number: ";
int port;
cin >> port;
if (port_is_open(address, port)) {
cout << "Port " << port << ": OPEN" << endl;
}
else {
cout << "Port " << port << ": CLOSED" << endl;
}
return 0;
}
但如果这行得通,我就不会在这里了。
严重性代码描述项目文件行抑制状态 错误 LNK2019 无法解析外部符号“public: virtual __thiscall sf::Socket::~Socket(void)” (??1Socket@sf@@UAE@XZ) 在函数“public: virtual __thiscall sf::TcpSocket::~TcpSocket”中引用(void)" (??1TcpSocket@sf@@UAE@XZ) PortScannerWin32 c:\Users\James\documents\visual studio 2017\Projects\PortScannerWin32\PortScannerWin32\PortScanner.obj 1
在函数“bool __cdecl port_is_open(class std::basic_string,class std::allocator > const &,int)" (?port_is_open@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) PortScannerWin32 c :\Users\James\documents\visual studio 2017\Projects\PortScannerWin32\PortScannerWin32\PortScanner.obj 1
错误 LNK2019 无法解析外部符号“public: enum sf::Socket::Status __thiscall sf::TcpSocket::connect(class sf::IpAddress const &,unsigned short,class sf::Time)” (?connect@ TcpSocket@sf@@QAE?AW4Status@Socket@2@ABVIpAddress@2@GVTime@2@@Z) 在函数“bool __cdecl port_is_open(class std::basic_string,class std::allocator > const &,int)”中引用(?port_is_open@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) PortScannerWin32 c:\Users\James\documents\visual studio 2017 \Projects\PortScannerWin32\PortScannerWin32\PortScanner.obj 1
在函数“bool __cdecl port_is_open(class std::basic_string,class std::allocator > const &,int)" (?port_is_open@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) PortScannerWin32 c :\Users\James\documents\visual studio 2017\Projects\PortScannerWin32\PortScannerWin32\PortScanner.obj 1
错误 LNK2019 无法解析外部符号“public: __thiscall sf::IpAddress::IpAddress(class std::basic_string,class std::allocator > const &)”(??0IpAddress@sf@@QAE@ABV?$basic_string @DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 在函数“bool __cdecl port_is_open(class std::basic_string,class std::allocator > const &, int)" (?port_is_open@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) PortScannerWin32 c:\Users\James\documents\视觉工作室 2017\Projects\PortScannerWin32\PortScannerWin32\PortScanner.obj 1
错误 LNK2001 无法解析外部符号“public: static class sf::Time const sf::Time::Zero”(?Zero@Time@sf@@2V12@B) PortScannerWin32 c:\Users\James\documents\visual工作室 2017\Projects\PortScannerWin32\PortScannerWin32\PortScanner.obj 1
警告 LNK4272 库机器类型“x64”与目标机器类型“X86”冲突 PortScannerWin32 D:\SFML-2.4.2\lib\sfml-network-d.lib 1Error LNK1120 6 unresolved externals PortScannerWin32 c:\users\james\documents\visual studio 2017\Projects\PortScannerWin32\Debug\PortScannerWin32.exe 1
这些都是我的错误,老实说,我真的一点头绪都没有。我按照教程逐字逐句输入了依赖项等。
有人知道出了什么问题吗?我想说显而易见的答案是 2015 年在 VS 2017 中使用,但很多论坛都表示它可以正常工作,因为 SFML 2015 中的更新允许这样做。
【问题讨论】:
-
听起来你还没有链接图书馆。
-
在 Linker->General 我已经用 D:\SFML-2.4.2\lib 填写了 Additional Libraries Directory,这不是链接吗?我已经输入了依赖项,还有什么我必须做的吗?
标签: c++ network-programming visual-studio-2017 sfml