Hi amigos,
Estoy practicando el uso de threads en ANSI C, en Windows con Codeblocks, y me da un error al compilar que no logro arreglar.
Tengo la siguiente funcion que me abre una calculadora (funciona perfectamente):
#include <pthread.h>
void *b()
{
exec("calc");
return NULL;
}
Y he hecho ahora esta otra funcion para lanzar la calculadora desde una nueva hebra, para que el programa no se pare:
void a()
{
pthread_t h1;
pthread_create(&h1, NULL, b(),NULL);
}
El problema es que al compilar me da el siguiente error en la instrucción "pthread_t h1", porque creo que no encuentra el tipo de dato pthread_t:
main.c|15|undefined reference to `_imp__pthread_create'|
He leído por internet que tengo que añadir el flag -l al compilar, ya que estoy utilizando GCC como compilador en el Codeblocks, pero sigo con el problema...
¿Alguien sabria ayudarme?
Grax!!!
Hola DrKillador , según tengo entendido y aunque nunca la usado, pthread no está soportada nativamente por Windows por lo que tendrás que compilar enlazando la siguiente librería Pthreads-w32 (http://sourceware.org/pthreads-win32/).
PD: No tengo mucha idea del tema pero parece ser que es eso.
¡Un saludo!
Puedes también llamar a las API de windows:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspx
Gracias! lo solucioné usando CreateThread de la WinAPI.
Saludos!