首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lnk2019 visual studio错误

lnk2019 visual studio错误
EN

Stack Overflow用户
提问于 2013-02-25 16:14:40
回答 1查看 5.4K关注 0票数 4

我正在尝试创建一个简单的UDP套接字类来在c++程序和java程序之间进行一些对话,所以我正在尝试创建一个套接字类来处理所有的UDP传输,但是我无法编译程序,因为我得到了大约8个lnk2019错误,我甚至不知道它们是什么意思。我主要在Java中工作,只有在我不得不笑的时候才使用c++。我有3个文件,套接字头和代码。另外,Udp套接字代码来自rFactor-Nesim,所以套接字代码不是我写的。

UdpSocket.cpp

代码语言:javascript
复制
#include "UdpSocket.hpp"

#include <stdio.h>

UdpSocket::UdpSocket(const char* host, int port) 
: mHost(host), mPort(port)
{
}

UdpSocket::~UdpSocket(void)
{
}

void UdpSocket::Open()
{
if(WSAStartup(MAKEWORD(2, 0), &mWinsockData) != 0)
    fprintf(stderr, "WSAStartup() failed");   

if ((mSocket = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
    perror("socket() failed");   

memset(&mSocketAddress, 0, sizeof(mSocketAddress));
mSocketAddress.sin_family = AF_INET;
mSocketAddress.sin_addr.s_addr = inet_addr(mHost);
mSocketAddress.sin_port = htons(mPort);
}

void UdpSocket::Close()
{
closesocket(mSocket);  
WSACleanup();
}

void UdpSocket::Send(char* str, size_t length)
{
size_t result = sendto(mSocket, str, length, 0, 
    (struct sockaddr *) &mSocketAddress, sizeof(mSocketAddress));

if(result != length)
    perror("sendto() sent incorrect number of bytes");   
}

UdpSocket.hpp

代码语言:javascript
复制
#ifndef UDPSOCKET_HPP
#define UDPSOCKET_HPP

#include <WinSock.h>

class UdpSocket
{
public:
UdpSocket(const char* host, int port);
~UdpSocket(void);

void Send(char* str, size_t length);

void Open();
void Close();
private:
const char* mHost;
int mPort;
int mSocket;
struct sockaddr_in mSocketAddress;
WSADATA mWinsockData;
};

#endif // UDPSOCKET_HPP

和主要的

代码语言:javascript
复制
#include "Socket/UdpSocket.hpp"
#include <iostream>


int Main(){
UdpSocket* testSocket = new UdpSocket("127.0.0.1", 27469);
testSocket->Open();
system("pause");
return 0;
}

任何帮助都是最好的。我对c++不是很在行,但我已经做了一点

控制台输出:

代码语言:javascript
复制
Error   1   error LNK2019: unresolved external symbol __imp__htons@4 referenced in function "public: void __thiscall UdpSocket::Open(void)" (?Open@UdpSocket@@QAEXXZ)   UdpSocket.obj   SocketTest
Error   2   error LNK2019: unresolved external symbol __imp__inet_addr@4 referenced in function "public: void __thiscall UdpSocket::Open(void)" (?Open@UdpSocket@@QAEXXZ)   UdpSocket.obj   SocketTest
Error   3   error LNK2019: unresolved external symbol __imp__socket@12 referenced in function "public: void __thiscall UdpSocket::Open(void)" (?Open@UdpSocket@@QAEXXZ) UdpSocket.obj   SocketTest
Error   4   error LNK2019: unresolved external symbol __imp__WSAStartup@8 referenced in function "public: void __thiscall UdpSocket::Open(void)" (?Open@UdpSocket@@QAEXXZ)  UdpSocket.obj   SocketTest
Error   5   error LNK2019: unresolved external symbol __imp__WSACleanup@0 referenced in function "public: void __thiscall UdpSocket::Close(void)" (?Close@UdpSocket@@QAEXXZ)    UdpSocket.obj   SocketTest
Error   6   error LNK2019: unresolved external symbol __imp__closesocket@4 referenced in function "public: void __thiscall UdpSocket::Close(void)" (?Close@UdpSocket@@QAEXXZ)   UdpSocket.obj   SocketTest
Error   7   error LNK2019: unresolved external symbol __imp__sendto@24 referenced in function "public: void __thiscall UdpSocket::Send(char *,unsigned int)" (?Send@UdpSocket@@QAEXPADI@Z)  UdpSocket.obj   SocketTest
Error   8   error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup   MSVCRTD.lib SocketTest
Error   9   fatal error LNK1120: 8 unresolved externals C:\Users\Brendan\Documents\Visual Studio 2008\Projects\SocketTest\Debug\SocketTest.exe  SocketTest
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-25 17:15:19

听起来你没能链接到Winsock - Ws2_32.lib

如果您是从命令行构建的,请在link命令行中添加Ws2_32.lib

如果您是从Visual Studio构建的,请在项目配置对话框中查找链接器标志/设置。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15062654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档