elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error creando Thread (CreateThread)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error creando Thread (CreateThread)  (Leído 3,794 veces)
CeroX901

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Error creando Thread (CreateThread)
« en: 17 Octubre 2011, 18:32 pm »

Hola, estoy intentando crear un Thread desde una Clase pero no logro hacerlo ya que me sale un error que dice:



previamente tengo definida la funcion en private: dentro de la clase:

Código
  1. DWORD WINAPI Thread_Listen(LPVOID lpParam);

y claramente el método usado está definido de esta manera:

Código
  1. DWORD WINAPI S_Server::Thread_Listen(LPVOID lpParam) {
  2. do {
  3. cl_[0] = accept(l_, NULL, NULL);
  4. if (cl_[0] == INVALID_SOCKET) {
  5. printf("Error_ACCEPT::%ld\n", WSAGetLastError());
  6. }
  7. noClients++;
  8. } while (true);
  9.    return 0;
  10. }

Cuando intento compilar me sale lo siguiente:

Citar
error C3867: 'S_Server::Thread_Listen': falta la lista de argumentos de la llamada a la función; utilice '&S_Server::Thread_Listen' para crear un puntero al miembro

PD: Trabajo bajo Visual Studio 2010 Professional

Espero que me ayuden... Salud2  ;D


En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Error creando Thread (CreateThread)
« Respuesta #1 en: 17 Octubre 2011, 19:00 pm »

¿Y por qué no pruebas a hacer lo que te dice el error?

En cualquier caso, sería mejor que depurases.

http://msdn.microsoft.com/en-us/library/b0x1aatf.aspx


« Última modificación: 17 Octubre 2011, 19:20 pm por Queta » En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
CeroX901

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: Error creando Thread (CreateThread)
« Respuesta #2 en: 17 Octubre 2011, 19:56 pm »

Intenté con la siguiente linea:

Código
  1. HANDLE hThread = CreateThread(NULL, 0, &S_Server::Thread_Listen, NULL, 0, &dwThreadId);

Me aparece el siguiente error:

Citar
error C2664: 'CreateThread' : no se puede convertir el parámetro 3 de 'DWORD (__stdcall S_Server::* )(LPVOID)' a 'LPTHREAD_START_ROUTINE'

Sigo con la duda...
En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Error creando Thread (CreateThread)
« Respuesta #3 en: 17 Octubre 2011, 20:58 pm »

Pues en teoría, tu primer código, debería funcionar.

Intenta depurar, repito; además que no tenemos suficiente código y puedes probar de solucionarlo con las opciones que vienen en la página que te dí.
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
CeroX901

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: Error creando Thread (CreateThread)
« Respuesta #4 en: 17 Octubre 2011, 21:07 pm »

Logré solucionarlo de la siguiente manera   :rolleyes:

Arriba en private: lo modifiqué así:

Código
  1. DWORD __stdcall Thread_Listen();

Cuando crea el proceso lo arreglé de esta manera:

Código
  1. DWORD ThreadId;
  2. DWORD (__stdcall S_Server::*pmfnMember)() = &S_Server::Thread_Listen;
  3. HANDLE hthread=CreateThread(NULL, 0, * (LPTHREAD_START_ROUTINE *) &pmfnMember, this, 0, &ThreadId);

y el método donde ejecuta el código quedó así:

Código
  1. DWORD S_Server::Thread_Listen() {
  2. do {
  3. cl_[0] = accept(l_, NULL, NULL);
  4. if (cl_[0] == INVALID_SOCKET) {
  5. printf("Error_ACCEPT::%ld\n", WSAGetLastError());
  6. }
  7. noClients++;
  8. } while (true);
  9.    return 0;
  10. }

Me sirvió de ayuda la siguiente pagina: http://www.pocketpcjunkies.com/Uwe/Forum.aspx/wince-vc/2935/Threads-on-class

Espero que para los que tengan el mismo problema les ayude... Salud2! y Gracias! :D
En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Error creando Thread (CreateThread)
« Respuesta #5 en: 17 Octubre 2011, 21:40 pm »

Logré solucionarlo de la siguiente manera   :rolleyes:

Arriba en private: lo modifiqué así:

Código
  1. DWORD __stdcall Thread_Listen();

__stdcall es lo mismo que WINAPI. Está declarada en WinDef.h:

Código
  1. #define WINAPI __stdcall

Enhorabuena por haberlo solucionado :D.
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Error creando Thread (CreateThread)
« Respuesta #6 en: 17 Octubre 2011, 23:19 pm »

Muy interesante y simple de implementar el hack la verdad, no lo conocia.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
CeroX901

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: Error creando Thread (CreateThread)
« Respuesta #7 en: 18 Octubre 2011, 01:03 am »

__stdcall es lo mismo que WINAPI. Está declarada en WinDef.h:

Código
  1. #define WINAPI __stdcall

Enhorabuena por haberlo solucionado :D.

Si me di cuenta... Gracias...  ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error rarisimo creando thumbnail
PHP
PanConMantequilla 2 3,973 Último mensaje 21 Julio 2011, 09:03 am
por PanConMantequilla
#include <thread/AsyncCallback.h> #include <thread/Runnable.h>
GNU/Linux
Codename!! 1 3,087 Último mensaje 18 Agosto 2011, 07:14 am
por Foxy Rider
#include <thread/AsyncCallback.h> #include <thread/Runnable.h>
Programación C/C++
Codename!! 0 2,270 Último mensaje 15 Agosto 2011, 21:31 pm
por Codename!!
Error creando lista C++
Programación C/C++
d00ze13 3 2,969 Último mensaje 18 Diciembre 2013, 11:41 am
por d00ze13
Error con Thread
Java
Baal_30 1 1,769 Último mensaje 7 Mayo 2016, 14:13 pm
por Baal_30
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines