Problemas con Windows API en C

Iniciado por mester, 1 Diciembre 2015, 22:43 PM

0 Miembros y 1 Visitante están viendo este tema.

mester

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:

undefined reference to `InternetOpen@20`
collect2: Id returned 1 exit status


Con un codigo tan mediocre como este:

#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.
Justicia es dar a cada uno lo que se merece

class_OpenGL

Cita de: nonpromiscVIVA 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"

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

mester

Cita de: class_OpenGL en  2 Diciembre 2015, 07:07 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
Justicia es dar a cada uno lo que se merece

class_OpenGL

No he venido al foro de programación a discutir :D

¿Has conseguido resolver tu error?

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

daryo

#4
.
buenas

mester

Cita de: class_OpenGL en  2 Diciembre 2015, 07:07 AM
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.
Justicia es dar a cada uno lo que se merece

class_OpenGL

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").

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL