Înapoi la blogToate tutorialele Metin2
Tutoriale Metin2 · Lecția 93 din 99

Erori de compilare frecvente în Metin2, explicate simplu (server și client)

2 noiembrie 2026 6 min de citit

Prima compilare rar merge din prima. Pe ecran apar sute de rânduri, multe cu „error”, și pare că totul e stricat. De cele mai multe ori, însă, e **o singură** problemă, iar restul sunt urmări ale ei. Ca la o coadă de domino: contează prima piesă căzută. Lecția te învață s-o găsești și să recunoști cele mai dese mesaje.

Pe scurt: salvezi tot ce afișează compilarea într-un fișier, cauți prima eroare, o încadrezi într-o categorie (fișier lipsă, librărie lipsă, arhitectură greșită, unealtă lipsă, greșeală în cod) și repari doar cauza ei. Apoi compilezi din nou.

Nivel: Avansat. Ce trebuie să știi înainte: lecțiile despre mediul de compilare, librării, game și, pentru partea de Windows, clientul în Visual Studio.

Cuvinte pe care le vei întâlni

CuvântCe înseamnă
Eroare de compilareCompilatorul nu înțelege un fișier .cpp sau .h. Mesajul conține error:.
Eroare de legare (link)Toate fișierele s-au compilat, dar la lipire lipsește ceva. Mesajele conțin undefined reference sau LNK.
Header (.h)Fișier cu „declarații”, inclus în alte fișiere cu #include.
SimbolNumele unei funcții sau variabile, așa cum îl vede legarea.
Avertisment (warning)Un semnal, nu o oprire. Compilarea continuă.

Pasul 1: Salvează tot și caută prima eroare

Pe FreeBSD, din folderul pe care îl compilezi:

sh
gmake 2>&1 | tee /usr/home/build/build.log
grep -nEi "error|undefined reference|cannot find|not found" /usr/home/build/build.log | head -20
  • 2>&1 trimite și mesajele de eroare în același loc cu restul textului.
  • tee le arată pe ecran și le salvează.
  • grep -nEi caută cuvintele-cheie, fără să conteze literele mari, și arată numărul rândului.
  • head -20 arată doar primele 20 de potriviri. Prima e cea importantă.

Deschide apoi build.log cu Notepad++ (prin WinSCP) și citește câteva rânduri înainte de prima eroare. Acolo scrie ce fișier se compila.

Pasul 2: Recunoaște tipul erorii

Erori pe FreeBSD (gmake, clang)

Ce veziCe înseamnăCe verifici
clang++-devel: not found sau makedepend: not foundLipsește o unealtăMediul de compilare, pasul 3
Need an operator sau alte erori de sintaxă în MakefileAi rulat make în loc de gmakeRulează gmake
fatal error: 'ceva.h' file not foundLipsește un headerCalea din INCDIR, dacă există folderul, literele mari și mici din nume
cannot find -lIL (sau alt -l...)Lipsește o librărie la legarePachetul librăriei sau calea din LIBDIR
undefined reference to ...Un simbol nu a fost găsit la legareAi compilat toate librăriile? În ordine? Cu același compilator?
incompatible with elf_i386 sau file in wrong formatAmesteci 32 și 64 de bițifile pe fișierele .o și .a; vezi mediul de compilare, pasul 4
mv: rename ../game to /usr/metin2/...: No such file or directoryFolderul din GAMEDIR nu existăProgramul s-a compilat! E în game/. Schimbă GAMEDIR spre un folder care există
python2.7: not foundRețeta principală vrea Python 2.7În sursa verificată e un pas opțional (limit_time)
warning: Clock skew detectedCeasul sistemului e greșitCorectează data serverului de test, apoi compilează curat
error: unterminated #ifndefUn fișier .h s-a salvat fără rândul gol de la finalAdaugă un Enter după ultimul #endif

Erori în Visual Studio (client)

Ce veziCe înseamnăCe verifici
C1083: Cannot open include fileLipsește un headerFolderul extern, Include Directories din proprietățile proiectului
LNK2019: unresolved external symbolLipsește o librărie la legareAdditional Dependencies, platforma (Win32), configurația
LNK1104: cannot open file '...lib'Fișierul .lib nu e găsitCalea din Library Directories
MSB8020: The build tools for ... cannot be foundLipsește toolset-ulVisual Studio Installer
RC1015: cannot open include file 'afxres.h'Lipsește MFCComponenta C++ MFC

Pasul 3: Repară doar cauza, apoi recompilează

  1. Schimbă un singur lucru (instalezi un pachet, corectezi o cale).
  2. Notează ce ai schimbat în jurnal.
  3. Compilează din nou și caută iar prima eroare.

Dacă după reparație apare altă eroare, e normal: ai trecut de prima piesă de domino. Dacă apare aceeași, reparația n-a atins cauza. Revino la ce aveai.

Trei capcane reale

Comentariile în coreeană. Multe fișiere vechi din sursă au comentarii în coreeană, salvate cu o codificare veche (în sursa verificată, de exemplu cmd_gm.cpp). Dacă editorul le salvează în UTF-8, apar semne �. De obicei compilarea merge, dar dacă stricăciunea atinge un text afișat în joc, mesajul se strică. În Notepad++, verifică codificarea în bara de jos înainte și după salvare și nu folosi conversii automate.

Schimbarea compilatorului. Dacă treci de la un compilator la altul (de exemplu de la g++ la clang++), pot apărea erori noi în cod care mergea, pentru că fiecare e strict la alte lucruri. Exemplu întâlnit: funcții vechi din C++ precum bind1st sau mem_fun, scoase din versiunile noi ale limbajului. Nu e o greșeală a ta, e o portare. Vezi portarea pe un FreeBSD modern.

Librăriile copiate „ca să meargă”. Unele tutoriale vechi spun să copiezi toate .a-urile în /usr/lib. Pare că rezolvă, dar nu mai știi ce ai schimbat, iar alte programe pot fi afectate. Repară calea în Makefile, nu sistemul.

Greșeli des întâlnite

  • Citești ultima eroare, de la finalul textului. De obicei e doar o urmare.
  • Schimbi zece lucruri deodată. Dacă merge, nu știi ce a ajutat; dacă nu, nu știi ce a stricat.
  • Ascunzi erorile cu opțiuni care le transformă în avertismente. Problema rămâne, doar că apare mai târziu, la jucători.
  • Cauți mesajul pe internet și copiezi prima soluție. Verifică întâi dacă se potrivește cu sursa și sistemul tău.

Întrebări frecvente

Avertismentele (warning) trebuie reparate?

Nu opresc compilarea. Sursa verificată chiar le ascunde cu -w. Când modifici cod, e bine totuși să le citești pentru fișierele tale.

De ce compilarea a mers ieri și azi nu?

Ceva s-a schimbat: o actualizare de pachete (pkg upgrade), ceasul sistemului, un fișier editat. Compară cu copia de ieri și uită-te în jurnal.

Ce trimit când cer ajutor?

Sistemul (uname -a), compilatorul (clang++ --version), comanda rulată și 20–30 de rânduri din jurul primei erori. Fără parole sau IP-uri reale.

Ce urmează

Ai un mediu care compilează curat. E momentul pentru prima modificare în sursa game. Toate lecțiile sunt în lista tutorialelor Metin2.

Server Metin2 gata de joc

Găzduire Metin2 în România, cu instalare de serverfiles, bază de date MySQL și protecție Anti-DDoS inclusă.

DiscordWhatsApp