Hola
tengo un problema, hace unos meses que llevo desarrollando un mini juego en c++ con la ayuda de sdl y sus librerias auxiliares,
todo bien, e linkado todas correctamente, pero ayer me puse con el tema de la red, baje sdl_net de la pagina oficial, lo linqué poniendo -lSDL_net y pruebo con un ejemplo de un tutorial
todo correcto pero me dice el siguiente error:
C:\Dev-Cpp\lib\libSDLmain.a(SDL_win32_main.o)(.text+0x39c)
In function `console_main':
[Linker error] undefined reference to `SDL_main'
C:\Dev-Cpp\lib\libSDLmain.a(SDL_win32_main.o)(.text+0x39c) ld returned 1 exit status
no se si puede ser por algun problema de la version de la libreria porque sdlmain esta correcto en mi compilador
si alguien sabe algo sobre el tama por favor ruego me contesten
a poder ser a mi email o me agregais a msn dj_kirometeperas@hotmail.com
GRACIAS DE ANTEMANO
el codigo que he probado es este:
#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_net.h>
using namespace std;
int main() {
// Inicializamos SDL_net
if(SDLNet_Init() < 0) {
cout << "SDL_Init: " << SDLNet_GetError();
exit(1);
}
atexit(SDLNet_Quit);
// Modo servidor
IPaddress ip;
// Configuramos el servidor para escuchar el puerto 2000
if(SDLNet_ResolveHost(&ip, NULL, 2000) < 0) {
cerr << "SDLNet_ResolveHost(): " << SDLNet_GetError();
exit(1);
}
// Abrimos una conexión
TCPsocket socket;
socket = SDLNet_TCP_Open(&ip);
if(!socket) {
cerr << "SDLNet_TCP_Open(): " << SDLNet_GetError();
exit(1);
}
cout << "Servidor activo" << endl;
// Bucle de control de la conexión
bool salir = false;
TCPsocket socket_cliente;
while(salir == false) {
// ¾Tenemos una conexión pendiente?
// La aceptamos
if((socket_cliente = SDLNet_TCP_Accept(socket))) {
// Ahora realizamos la comunicación con el cliente
IPaddress *ip_remota;
// Mostramos la información
if((ip_remota = SDLNet_TCP_GetPeerAddress(socket_cliente)))
cout << "Cliente conectado "
<< SDLNet_Read32(&ip_remota->host)
<< " : "
<< SDLNet_Read16(&ip_remota->port) << endl;
else
cerr << "SDLNet_TCP_GetPeerAddress(): " << SDLNet_GetError() << endl;
// Mostramos lo que envía el cliente
bool terminar = false;
char buffer[512];
while(terminar == false) {
// Leemos de la conexión
if (SDLNet_TCP_Recv(socket_cliente, buffer, 512) > 0) {
cout << "Cliente dice: " << buffer << endl;;
// Si da orden de salir, cerramos
if(strcmp(buffer, "exit") == 0) {
terminar = true;
cout << "Desconectando" << endl;
}
if(strcmp(buffer, "quit") == 0) {
terminar = true;
salir = true;
cout << "Server Down" << endl;
}
}
}
// Cierro el socket
SDLNet_TCP_Close(socket_cliente);
}
}
SDLNet_TCP_Close(socket);
return 0;
}
Citar
int main(int argc, char** argv) { /* ... */ }
Por cierto, con respecto a lo de responder a tu correo: Tienes una duda que, casualmente, muchísima gente nos hemos dado de bruces con ella en sus respectivos momentos, y otros acabarán haciéndolo tarde o temprano (ni te imaginas la de veces que se habrá preguntado esto en la lista de correo de SDL).
Que quieras una respuesta solo para ti es un tanto egoísta; la utilidad del foro es la colectivización de los problemas y sus soluciones, para que en un futuro sirva de ayuda a cualquiera.
Imagino que lo has pedido sin malas intenciones, pero tenlo en cuenta para la próxima vez.
Solo era pork si me contestan aki no me entero
Pero gracias por solventarme la duda :wink:
Cita de: "kirometep"Solo era pork si me contestan aki no me entero
Eso es problema de cada uno :P Los foros estan para compartir su contenido con los demas. Si se tercia por el motivo que sea, si no se puede o no se desea seguir el trafico de mensajes y respuestas del foro y estar pendiente de la respuesta (es comprensible) tienes una opcion en tu perfil de usuario para que el sistema te envie avisos al correo cuando respondan en algun post que hayas creado o participado.
Salu2...