Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mester en 1 Diciembre 2015, 22:43 pm



Título: Problemas con Windows API en C
Publicado por: mester en 1 Diciembre 2015, 22:43 pm
Hola.
Estaba siguiendo la windows api, concretamente esta guía: https://msdn.microsoft.com/en-us/library/windows/desktop/aa385096(v=vs.85).aspx
pero me da errores de compilación con cualquier compilador, tanto gcc de mingw como el de Dev-C++, que también usa mingw. Me suelta este error:
Código:
undefined reference to `InternetOpen@20`
collect2: Id returned 1 exit status

Con un codigo tan mediocre como este:
Código:
#include<stdio.h>
#include<stdlib.h>
#include<wininet.h>
int main(){
HINTERNET conexion;
conexion=InternetOpen("FTP",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
return 0;
}

Y me pasa mas o menos lo mismo con los sockets.
Cuando utilizo las funciones definidas aquí: https://msdn.microsoft.com/en-us/library/windows/desktop/ms741394(v=vs.85).aspx o incluso las de un tutorial cualquiera sobre sockets en windows, me sigue dando error de compilación.
Utilzo Windows 7, obviamente pirata, (VIVA EL SOFTWARE LIBRE), supongo que lo de estar pirateado no importará, pero bueno. Windows 7 Home Premium.


Título: Re: Problemas con Windows API en C
Publicado por: class_OpenGL en 2 Diciembre 2015, 07:07 am
Cita de: nonpromisc
VIVA EL SOFTWARE LIBRE
El software libre no es lo mismo que el software pirata...

Quitando eso, tu problema no es un error de compilación, sino de enlazado. En las opciones de enlazado (Linker settings) tienes que añadir la librería wininet .lib/.a

No sé como se hace en Dev-C++, pero en Code::Blocks se hace yendo a
Project->Build Options->Linker Settings y puesto que estamos con MinGW, en "Other linker options" tienes que escribir "-lwininet"


Título: Re: Problemas con Windows API en C
Publicado por: mester en 2 Diciembre 2015, 07:35 am
El software libre no es lo mismo que el software pirata...

Ya lo sé, claro que lo sé llevo mucho tiempo usando Linux, en concreto Debían, sin tocar Windows. Pongo lo del software pirata porque no me gusta el código cerrado y no pienso pagar por él


Título: Re: Problemas con Windows API en C
Publicado por: class_OpenGL en 2 Diciembre 2015, 07:44 am
No he venido al foro de programación a discutir :D

¿Has conseguido resolver tu error?


Título: Re: Problemas con Windows API en C
Publicado por: daryo en 2 Diciembre 2015, 13:26 pm
.


Título: Re: Problemas con Windows API en C
Publicado por: mester en 2 Diciembre 2015, 16:41 pm
El software libre no es lo mismo que el software pirata...

Quitando eso, tu problema no es un error de compilación, sino de enlazado. En las opciones de enlazado (Linker settings) tienes que añadir la librería wininet .lib/.a

No sé como se hace en Dev-C++, pero en Code::Blocks se hace yendo a
Project->Build Options->Linker Settings y puesto que estamos con MinGW, en "Other linker options" tienes que escribir "-lwininet"
No lo he encontrado en Dev-C++, pero me he descargado GCC para Windows y le he puesto el parámetro -lwininet y sí que me ha funcionado jeje. Es que nunca antes había usado un IDE, siempre he programado desde terminal y en Linux.


Título: Re: Problemas con Windows API en C
Publicado por: class_OpenGL en 2 Diciembre 2015, 17:07 pm
A mi me pasa casi que al contrario (pero si que he usado a veces la línea de comandos, a nivel de aprendizaje, no como algo para "hacer todos los días").


Título: Re: Problemas con Windows API en C
Publicado por: ivancea96 en 2 Diciembre 2015, 17:10 pm
http://sourceforge.net/p/dev-cpp/discussion/128327/thread/1baf9670/ (http://sourceforge.net/p/dev-cpp/discussion/128327/thread/1baf9670/)
Prueba