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

Errores en codigo

Estas en el tema de Errores en codigo en el foro de C/C++ en Foros del Web. Buenas, he estado intentando crear un dll (Es para agregar una funcion a un servidor de mu, luego de crear la DLL mi intencion es ...
  #1 (permalink)  
Antiguo 23/11/2008, 20:20
 
Fecha de Ingreso: noviembre-2008
Mensajes: 3
Antigüedad: 15 años, 5 meses
Puntos: 0
Errores en codigo

Buenas, he estado intentando crear un dll (Es para agregar una funcion a un servidor de mu, luego de crear la DLL mi intencion es hookearla a un programa.) con un codigo que saque de un foro, pero no he podido. Me dan 2 errores y una advertencia.
Aca tengo el codigo:

// PostDLL2.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}


__declspec(dllexport) LPCTSTR RetrievePost3(LPCTSTR szDirectory, LPCTSTR szPrefix)

void DataSendAll(unsigned char* Packet, int Length)
{
for (int i=6400; i<7400; i++)
if(gObjIsConnected(i))
DataSend(i, Packet, Length);
}

void SendPost(int wId, LPCSTR Command, LPCSTR Text)
{
if (!IsPost) return;
if (!gObjIsConnected(wId)) return;
if (!strcmpi(Command, "/Post"))
{
MessageOutput(wId, "[%s] Useage: /Post <Msg>.", szPrefix);
MessageOutput(wId, "[%s] Price for post: %d, Minimun Level: %d", szPrefix, PostCost, PostLevel);
return;
}
gObj_SetInfo(wId);
if (gObj.Level < PostLevel)
{
MessageOutput(wId, "[%s] You're level is too low to post!", szPrefix);
return;
}
if (gObj.Money < PostCost)
{
MessageOutput(wId, "[%s] You don't have enough money to post!", szPrefix);
return;
}
BYTE *Packet;
char Message[100];
Packet = (BYTE*) malloc(200);
memset(Packet, 0x00, 200);
*Packet = 0xC1;
*(Packet+2) = 0x00;
memcpy((Packet+3), gObj.Nick, strlen(gObj.Nick));
sprintf(Message, "@@[Global] %s", Text);
memcpy((Packet+13), Message, strlen(Message));
int Len = (strlen(Message) + 0x13);
*(Packet+1) = Len;
DataSendAll(Packet, Len);
int Amount = (gObj.Money - PostCost);
gObj_Write(wId, gObj_Money, Amount);
MoneySend(wId, Amount);
free (Packet);
}

Aca los errores:


C:\Archivos de programa\Microsoft Visual Studio\MyProjects\PostDLL\PostDLL.cpp(16) : warning C4518: 'void ' : storage-class or type specifier(s) unexpected here; ignored

C:\Archivos de programa\Microsoft Visual Studio\MyProjects\PostDLL\PostDLL.cpp(16) : error C2146: syntax error : missing ';' before identifier 'DataSendAll'

C:\Archivos de programa\Microsoft Visual Studio\MyProjects\PostDLL\PostDLL.cpp(16) : fatal error C1004: unexpected end of file found
Error executing cl.exe.



Alguien sabe como se arreglan??
Gracias
  #2 (permalink)  
Antiguo 23/11/2008, 21:30
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Errores en codigo

Que te falta un ; al final de esta línea, quizá?

Código:
__declspec(dllexport) LPCTSTR RetrievePost3(LPCTSTR szDirectory, LPCTSTR szPrefix)
  #3 (permalink)  
Antiguo 24/11/2008, 04:44
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Errores en codigo

Por favor, soymanya te falto invertir 30'' en leer el output que generaba el compilador con el codigo de copiaste y pegaste!
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #4 (permalink)  
Antiguo 24/11/2008, 08:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 3
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Errores en codigo

1) venkman, si agrego el ; me salen 20 errores.
Que son estos: Post.cpp
Código:
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(19) : error C2065: 'gObjIsConnected' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(20) : error C2065: 'DataSend' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(26) : error C2065: 'IsPost' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(30) : error C2065: 'MessageOutput' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(30) : error C2065: 'szPrefix' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(31) : error C2065: 'PostCost' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(31) : error C2065: 'PostLevel' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(34) : error C2065: 'gObj_SetInfo' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(35) : error C2065: 'gObj' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(35) : error C2228: left of '.Level' must have class/struct/union type
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(40) : error C2228: left of '.Money' must have class/struct/union type
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(47) : error C2065: 'malloc' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(51) : error C2228: left of '.Nick' must have class/struct/union type
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(51) : error C2228: left of '.Nick' must have class/struct/union type
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(52) : error C2065: 'sprintf' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(57) : error C2228: left of '.Money' must have class/struct/union type
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(58) : error C2065: 'gObj_Write' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(58) : error C2065: 'gObj_Money' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(59) : error C2065: 'MoneySend' : undeclared identifier
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(60) : error C2065: 'free' : undeclared identifier
Error executing cl.exe.

Post.dll - 20 error(s), 0 warning(s)
2) Eternal Idol: No entendi lo que dijiste, la verdad todavia no se mucho de C++, me podrias decir bien donde esta el error, gracais.

Aca dejo todo lo que hice:

cree el Post.cpp con este codigo:
Código:
// Post.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    return TRUE;
}

__declspec(dllexport) LPCTSTR RetrievePost(LPCTSTR szDirectory, LPCTSTR szPrefix);

void DataSendAll(unsigned char* Packet, int Length)
{
for (int i=6400; i<7400; i++)
if(gObjIsConnected(i))
DataSend(i, Packet, Length);
}

void SendPost(int wId, LPCSTR Command, LPCSTR Text)

{
if (!IsPost) return;
if (!gObjIsConnected(wId)) return;
if (!strcmpi(Command, "/Post"))
{
MessageOutput(wId, "[%s] Useage: /Post <Msg>.", szPrefix);
MessageOutput(wId, "[%s] Price for post: %d, Minimun Level: %d", szPrefix, PostCost, PostLevel);
return;
}
gObj_SetInfo(wId);
if (gObj.Level < PostLevel)
{
MessageOutput(wId, "[%s] You're level is too low to post!", szPrefix);
return;
}
if (gObj.Money < PostCost)
{
MessageOutput(wId, "[%s] You don't have enough money to post!", szPrefix);
return;
}
BYTE *Packet;
char Message[100];
Packet = (BYTE*) malloc(200);
memset(Packet, 0x00, 200);
*Packet = 0xC1;
*(Packet+2) = 0x00;
memcpy((Packet+3), gObj.Nick, strlen(gObj.Nick));
sprintf(Message, "@@[Global] %s", Text);
memcpy((Packet+13), Message, strlen(Message));
int Len = (strlen(Message) + 0x13);
*(Packet+1) = Len;
DataSendAll(Packet, Len);
int Amount = (gObj.Money - PostCost);
gObj_Write(wId, gObj_Money, Amount);
MoneySend(wId, Amount);
free (Packet);
}
2) cree un text file le puse "Export.def" y le puse lo siguiente:
Código:
LIBRARY Post
EXPORTS
     RetrievePost
Si le saco el ; despues de esta linea:
Código:
__declspec(dllexport) LPCTSTR RetrievePost(LPCTSTR szDirectory, LPCTSTR szPrefix);
me dan solo 2 errores y una advertencia que son las siguientes:
Código:
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(16) : warning C4518: 'void ' : storage-class or type specifier(s) unexpected here; ignored
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(16) : error C2146: syntax error : missing ';' before identifier 'DataSendAll'
C:\Archivos de programa\Microsoft Visual Studio\MyProjects\Post\Post.cpp(16) : fatal error C1004: unexpected end of file found
Alguien sabe que estoy haciendo mal??
Gracias

Última edición por soymanya; 24/11/2008 a las 09:06
  #5 (permalink)  
Antiguo 24/11/2008, 08:56
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Errores en codigo

El error que habia era el que te indico venkman y con un esfuerzo de 30'' se solucionaba, espero que ahora lo hayas entendido, son dos cosas muy simples (el error y lo que te digo). Si hay mas errores no lo podemos saber ya que NO tenemos el codigo completo ...


Lo que estas haciendo mal es copiar y pegar codigo ajeno sin entenderlo en lo mas minimo.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #6 (permalink)  
Antiguo 24/11/2008, 09:31
 
Fecha de Ingreso: noviembre-2008
Mensajes: 3
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Errores en codigo

El codigo completo te lo di en el post de arriba...
Es verdad que no entiendo lo mas minimo, pero es asi como pusieron el codigo, y no es que se lo saque a alguien, lo postearon para compartirlo con los demás, y eso eso es todo el codigo.
que tendria que darte para que puedas saber los errores?
Gracias
  #7 (permalink)  
Antiguo 24/11/2008, 09:50
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Errores en codigo

Que hayan publicado eso no significa que este completo ... los errores son muy obvios, faltan declaraciones de variables, estructuras, etc. No es un codigo compilable por si solo ese, igual tendrias que haber dicho EXACTAMENTE lo que querias hacer desde el principio.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
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 18:04.