Estou tentando (já a um bom tempo) configurar um projeto c++ no eclipse, o projeto funciona para coisas básicas que não precisam de "arquivos headers" externos porém tenho de fazer um trabalho pra facul que usa o winsock.h e quando eu vou compilar o projeto o mesmo não acha os métodos.
O que eu já tentei fazer:
já fui nas propriedades do projeto e adicionei a pasta que contém o winsock.h Settings->Tool setting->GCC c+±> directories Não funcionou!
já fui nas propriedades do projeto e adicionei a lib winsock.h (com o .h e sem o .h) em Settings->Tool setting->MinGW libraries Não funcionou!
Estou usando eclipse ganymede, a última versão do CDT e o MinGW como compilador.
Os arquivos do projeto são:
Socket.h
#include <winsock.h>
SOCKET ConnectToTheServerIP ( char *serverName, unsigned short portNum );
void SendMessageIP ( SOCKET sock, char *buf, int numBytes );
void ReceiveMessageIP ( SOCKET sock, char *buf, int numBytes );
BOOL IsThereAMsg ( SOCKET sock );
SOCKET CreateServerIP ( unsigned short portNum );
int AcceptNewClientIP ( SOCKET serverSocket, SOCKET &newSocket );
int CheckNewClient ( SOCKET serverSocketIP, SOCKET &S);
void CloseSocket (SOCKET clientSock);
Sockets.cpp
#include "Sockets.h"
#include <iostream>
using namespace std;
//implementa os métodos de Sockets.h
Main.cpp
#include <iostream>
#include "Sockets.h"
using namespace std;
int main() {
//irá chamar métodos do Socket.h
O engraçado é que dando um ctrl + espaço o eclipse acha as funções que estão em winsock.h, o problema ocorre quando eu vou compilar o arquivo.
Eis o log de erros ao tentar compilar o aquivo:
**** Build of configuration Debug for project Trocar Arquivo Socket ****
**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\Sockets.o …\src\Sockets.cpp
…\src\Sockets.cpp: In function ‘void SendMessageIP(SOCKET, char*, int)’:
…\src\Sockets.cpp:82: warning: unused variable ‘result’
g++ -oTrocarArquivoSocket.exe src\Sockets.o src\Main.o
src\Sockets.o: In function _Z11CloseSocketj': D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/../src/Sockets.cpp:243: undefined reference to
_closesocket@4’
src\Sockets.o: In function _Z17AcceptNewClientIPjRj': D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/../src/Sockets.cpp:204: undefined reference to
_accept@12’
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:207: undefined reference to _closesocket@4' src\Sockets.o: In function
_Z14CreateServerIPt’:
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:148: undefined reference to _WSAStartup@8' D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/../src/Sockets.cpp:162: undefined reference to
_gethostname@8’
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:167: undefined reference to _gethostbyname@4' D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/../src/Sockets.cpp:172: undefined reference to
_socket@12’
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:177: undefined reference to _htons@4' D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/../src/Sockets.cpp:180: undefined reference to
_bind@12’
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:181: undefined reference to _closesocket@4' D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/../src/Sockets.cpp:185: undefined reference to
_listen@8’
src\Sockets.o: In function _Z11IsThereAMsgj': D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/../src/Sockets.cpp:119: undefined reference to
_select@20’
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:120: undefined reference to ___WSAFDIsSet@8' src\Sockets.o: In function
_Z16ReceiveMessageIPjPci’:
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:97: undefined reference to _recv@16' src\Sockets.o: In function
_Z13SendMessageIPjPci’:
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:82: undefined reference to _send@16' src\Sockets.o: In function
_Z20ConnectToTheServerIPPct’:
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:28: undefined reference to _WSAStartup@8' D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/../src/Sockets.cpp:42: undefined reference to
_gethostname@8’
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:47: undefined reference to _gethostbyname@4' D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/../src/Sockets.cpp:55: undefined reference to
_htons@4’
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:58: undefined reference to _socket@12' D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/../src/Sockets.cpp:63: undefined reference to
_connect@12’
D:\workspace\Eclipse\Programação de Software Básico\Trocar Arquivo Socket\Debug/…/src/Sockets.cpp:64: undefined reference to `_closesocket@4’
collect2: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 2234 ms.