Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema compilando este código de un ejemplo

Estas en el tema de problema compilando este código de un ejemplo en el foro de C/C++ en Foros del Web. Hola estoy siguiendo un tutorial, y al compilar esté simple código me da errores: Código: #include <windows.h> #include "detours.h" #pragma comment(lib, "detours.lib") BOOL APIENTRY DllMain( ...
  #1 (permalink)  
Antiguo 02/09/2011, 07:50
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 12 años, 11 meses
Puntos: 1
problema compilando este código de un ejemplo

Hola estoy siguiendo un tutorial, y al compilar esté simple código me da errores:

Código:
#include <windows.h>
#include "detours.h"

#pragma comment(lib, "detours.lib")

BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
	switch (ul_reason_for_call) {
		case DLL_PROCESS_ATTACH: {
			DisableThreadLibraryCalls(hModule);
			// Apply the hook
		}
	}
	return TRUE;
}

typedef HMODULE (WINAPI *LoadLibrary_t)(LPCSTR);
LoadLibrary_t orig_LoadLibrary; // holds address of original non-detoured function


// Our hooked LoadLibrary
HMODULE WINAPI LoadLibrary_Hook ( LPCSTR lpFileName ) 
{
	HMODULE hM = orig_LoadLibrary( lpFileName ); // keep functionality

	return hM;
}

// When the dll loads
orig_LoadLibrary = (LoadLibrary_t)DetourFunction((LPBYTE) LoadLibraryA, (LPBYTE) LoadLibrary_Hook );
El error que me envía al compilar es este:


1>------ Operación Generar iniciada: proyecto: dll, configuración: Debug Win32 ------
1>Compilando...
1>dllmain.cpp
1>c:\users\jorge\documents\visual studio 2008\projects\dll\dll\dllmain.cpp(30) : error C4430: falta el especificador de tipo; se presupone int. Nota: C++ no admite default-int
1>c:\users\jorge\documents\visual studio 2008\projects\dll\dll\dllmain.cpp(30) : error C2373: 'orig_LoadLibrary' : nueva definición; modificadores de tipo distintos
1> c:\users\jorge\documents\visual studio 2008\projects\dll\dll\dllmain.cpp(18) : vea la declaración de 'orig_LoadLibrary'
1>c:\users\jorge\documents\visual studio 2008\projects\dll\dll\dllmain.cpp(30) : error C2440: 'inicializando' : no se puede realizar la conversión de 'LoadLibrary_t' a 'int'
1> No existe un contexto en el que sea posible realizar esta conversión
1>El registro de compilación se guardó en el "file://c:\Users\Jorge\Documents\Visual Studio 2008\Projects\dll\dll\Debug\BuildLog.htm"
1>dll - 3 errores, 0 advertencias
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========

¿Alguien me puede orientar para saber cómo corregirlo?
  #2 (permalink)  
Antiguo 02/09/2011, 10:52
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: problema compilando este código de un ejemplo

¿Las dos ultimas lineas no iran dentro del case DLL_PROCESS_ATTACH?
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 02/09/2011, 13:41
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: problema compilando este código de un ejemplo

Este es el tutorial que estoy siguiendo, es un código corto, igual al verlo completo os da mas pistas:
http://www.rohitab.com/discuss/topic/34411-run-time-directx-hooking-using-code-injection-and-vtable/

Aparentemente en el tutorial esas dos líneas no están dentro del case
  #4 (permalink)  
Antiguo 02/09/2011, 14:31
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: problema compilando este código de un ejemplo

Bueno yo diria que esas dos lineas deberian ir justo despues de:

Código:
// Apply the hook
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 02/09/2011, 15:24
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: problema compilando este código de un ejemplo

He puesto las dos líneas donde indicabas, ahora el error al compilar es diferente:



1>c:\users\jorge\documents\visual studio 2008\projects\dll\dll\dllmain.cpp(14) : error C2065: 'orig_LoadLibrary' : identificador no declarado
1>c:\users\jorge\documents\visual studio 2008\projects\dll\dll\dllmain.cpp(14) : error C2065: 'LoadLibrary_t' : identificador no declarado
1>c:\users\jorge\documents\visual studio 2008\projects\dll\dll\dllmain.cpp(14) : error C2146: error de sintaxis : falta ';' delante del identificador 'DetourFunction'
1>c:\users\jorge\documents\visual studio 2008\projects\dll\dll\dllmain.cpp(14) : error C2065: 'LoadLibrary_Hook' : identificador no declarado
1>El registro de compilación se guardó en el "file://c:\Users\Jorge\Documents\Visual Studio 2008\Projects\dll\dll\Debug\BuildLog.htm"
1>dll - 4 errores, 0 advertencias
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========
  #6 (permalink)  
Antiguo 02/09/2011, 15:51
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: problema compilando este código de un ejemplo

¿Leiste los errores? Son muy claros; move estas dos lineas antes del DllMain:

Código:
typedef HMODULE (WINAPI *LoadLibrary_t)(LPCSTR);
LoadLibrary_t orig_LoadLibrary; // holds address of original non-detoured function
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Etiquetas: código, ejemplo, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:12.