Pourquoi ces erreurs de compilation sous visual studio ?
cs_bock
Messages postés2Date d'inscriptiondimanche 19 octobre 2003StatutMembreDernière intervention17 juin 2004
-
17 juin 2004 à 18:10
cs_bock
Messages postés2Date d'inscriptiondimanche 19 octobre 2003StatutMembreDernière intervention17 juin 2004
-
17 juin 2004 à 19:32
sous visual .net j'ai ces 3 erreurs:
network.c(112) : error C2420: 'strlen' : symbole non conforme dans premier opérande
network.c(112) : error C2415: type d'opérande incorrect
et :
netbios.c(193) : warning C4133: 'fonction' : types incompatibles - de 'unsigned short *' à 'LPCSTR'
pour cette portion de code network.c ,pourquoi strlen pose problème ? :
int rsend(SOCKET mysock, const char *buffer)
{
unsigned int len;
__asm {
mov eax, [buffer]
push eax
call strlen // get len of the buffer
mov len, eax // len = strlen(buffer);
add esp, 4
xor eax, eax
push eax
mov eax, [len]
push eax
mov eax, [buffer]
push eax
mov eax, [mysock]
push eax
call send // call send function
push eax
call Proc_Error
add esp, 4
}
return(0);
}
et pour le netbios.c:
cette partie du code:
if (!*server)
{
Proc_help("enumserver");
return -1;
}
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 17 juin 2004 à 18:44
salut
premiere erreur : tu ne peux pas utiliser strlen dans de l'asm pour la raison que BruNews a écrit. Il faut donc que tu mettes
len = strlen(buffer);
avant _asm
seconde erreur : la doc msdn indique que le premier parametre de NetServerEnum doit etre un LPCSTR et non un pointeur vers un unsigned short. Il faut donc que tu mettes dans ton code :
nStatus = NetServerEnum(pszServerName, dwLevel, (LPBYTE *) &pBuf, dwPrefMaxLen, &dwEntriesRead,&dwTotalEntries, dwServerType,NULL,&dwResumeHandle);