Jump to content

  • Log In with Google      Sign In   
  • Create Account

Unresolved external symbol using Winsock2 Functions


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 Xooch   Members   -  Reputation: 179

Like
0Likes
Like

Posted 19 April 2013 - 06:50 AM

Hey there, 

 

I'm trying to create a simple UDP socket, and send packets between the server and clients, although I'm getting a very strange error, I can't seem to figure out how to fix it, would really appreciate any help.

 

 

This is code for my client, creating the socket

void Application::Init_Winsock()
{
	WSAStartup(MAKEWORD(2,2), &Winsock);

	if(LOBYTE(Winsock.wVersion) !=2 || HIBYTE(Winsock.wVersion) !=2)	//Check version
	{
		WSACleanup();	//Cleanup and return false if version is wrong
		return;
	}

	//Create Socket
	Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

	//Input Receiver Information
	ZeroMemory(&RemoteAddress, sizeof(RemoteAddress));				//Clear Struct
	RemoteAddress.sin_family = AF_INET;								//Set the Address Family
	RemoteAddress.sin_addr.s_addr = inet_addr(SERVER_ADDRESS);		//Set IP Address
	RemoteAddress.sin_port = SERVER_PORT;							//Set Port
}

void Application::Send_Packet(PLAYER* data)
{
	sendto(Socket, (char*)data, sizeof(PLAYER), 0, (sockaddr*)&RemoteAddress, sizeof(sockaddr));
}

 

And these are the errors:

 

clienterrorb.png

 

 

And then I'm getting a very similar problem with my Server application as well, here is the code for the server, I've also declared RecvThread as a static:

		static DWORD WINAPI RecvThread(LPVOID);

 

void Application::Init_Winsock()
{
	WSAStartup(MAKEWORD(2,2), &Winsock);

	if(LOBYTE(Winsock.wVersion) !=2 || HIBYTE(Winsock.wVersion) !=2)	//Check Version
	{
		WSACleanup();	//Cleanup and end if not version 2
		return;
	}

	//Create Socket
	Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

	//Input Reciever Information
	ZeroMemory(&RemoteAddress, sizeof(RemoteAddress));		//Clear Struct
	RemoteAddress.sin_family = AF_INET;						//Set the Family Address
	RemoteAddress.sin_port = SERVER_PORT;					//Set Port
	bind(Socket, (sockaddr*)&RemoteAddress, sizeof(RemoteAddress));

	//Start the recieve thread
	////CreateThread(NULL, 0, RecvThread, NULL, 0, NULL);

	CreateThread(NULL, 0, RecvThread, (void*)this, 0, NULL);
}

DWORD WINAPI Application::RecvThread(LPVOID knock)
{
	/*
	while(true)
	{
		PLAYER Recv;
		recvfrom(Socket, (char*)&Recv, sizeof(PLAYER), 0, (sockaddr*)&RemoteAddress, &SizeInt);

		Player = Recv;
	}
	*/

	Application *instance = static_cast<Application *>(knock);
	while(true)
	{
		PLAYER Recv;
		recvfrom(instance->Socket, (char*)&Recv, sizeof(PLAYER), 0, (sockaddr*)&instance->RemoteAddress, &instance->SizeInt);

		instance->Player = Recv;
	}
}

 

and again, very similar error:

 

clienterrorb.png

 

I'm stumped :S


Edited by Xooch, 19 April 2013 - 06:51 AM.


Sponsor:

#2 hplus0603   Moderators   -  Reputation: 5725

Like
0Likes
Like

Posted 20 April 2013 - 08:52 PM

Add ws2_32.lib to your set of link libraries.

This is documented as needed on MSDN. If you scroll back to the end of the page for WSAStartup, it should list the header and link library you need.
enum Bool { True, False, FileNotFound };

#3 Xooch   Members   -  Reputation: 179

Like
0Likes
Like

Posted 21 April 2013 - 12:15 PM

Yo,

 

Thanks for the reply, I did as you said but still nothing has changed. Although I did include both folders, as I didn't know which one to include, could this cause a problem?

 

libinclude.png

-

ws232.png



#4 Brother Bob   Moderators   -  Reputation: 8631

Like
0Likes
Like

Posted 21 April 2013 - 12:36 PM

But did you add the libraries to the project as he asked for? That option is the "Additional Dependecies" in the "Linker->Input" section of the project options. What you showed is just the paths the linker will look at for the library files you add.

 

edit: And by the way, the paths you added looks like the standard path for the Windows API that should be automatically added if you have installed it. You should not add them again then.


Edited by Brother Bob, 21 April 2013 - 12:38 PM.


#5 Xooch   Members   -  Reputation: 179

Like
0Likes
Like

Posted 21 April 2013 - 12:54 PM

Yep, working now, thanks man






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS