Eroare instalare wxSmith-Code Blocks

Cand incerc sa instalez wxSmith imi apare eroarea asta:


Am facut setat variabila (Proprietati sistem-Complex-Variabile de mediu),acolo am inclus adresa(path de la mingw)
Dar nu merge cand scriu comanda mingw32-make f-makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1
Cum as putea rezolva?

wxWidgets nu prea e bine sa fie pus in “Program Files”. Dupa cum se poate vedea (‘Acces refuzat’), nu exista drepturi de scriere acolo. Instaleaza-l intr-un director c:\wxWidgets si o sa poti sa-l compilezi.

1 Like

Am rezolvat,l-am instalat doar ca am alta problema…
Cand incerc sa compilez primesc eroarea: ld.exe cannot find -lwxmsw28u
Cum pot rezolva?

Ai incercat sa cauti pe Google acel mesaj de eroare ?
:slight_smile:

1 Like

Nu i-ai specificat linker-ului unde se afla biblioteca cu pricina, e normal să n-o găsească.

3 Likes

Da,am cautat prin toate topicurile dar nu am gasit nimic concret

1 Like

si cum specific?un print daca se poate sau ceva de genul…

gcc -L C:\folderul\unde\este\biblioteca

1 Like

Scuze ca intreb dar habar nu am ce sa fac!
Unde introduc aceasta adresa?Am nevoie de explicatii ca pentru prosti

Daca nu precizezi ce folosesti (editor sau linie de comanda), naiba ştie :slight_smile:

1 Like

Folosesc code blocks

2 Likes

nu cred ca are gcc
posibil sa fie mingw
dar este cam la fel cu gcc
:slight_smile:

mingw chiar e gcc, modificat sa mearga pe windows

1 Like

Tot nu a iesit.Cand incerc sa le includ nu apar fisierele cu extensia dll

Pai arata-ne ce ai facut, altfel nu avem cum sa ne dăm seama ce ai greşit. Atenţie, nu confunda compilatorul cu linker-ul.

1 Like

Am rezolvat! Aparent dupa ce am adaugat librariile(fisierele cu extensia .a) trebuie sa sterg/elimin acel lwxmsw28u

1 Like

Ai rezolvat, dar se pare ca ai inţeles gresit rezolvarea :slight_smile:

Un pic de offtopic:
Şi “.a” şi “.dll” sunt “biblioteci” (“library” din engleză înseamnă “bibliotecă” în română, “librarie” e cu totul altceva).
Diferenţa dintre “.a” şi “.dll” este ca primele sunt biblioteci “statice”, celelalte sunt “dinamice” (dll inseamna "dynamic link library). Bibliotecile statice sunt încorporate în programul final, in timp ce “dll”-urile rămân doar “legate”, odata cu programul va trebui sa-i livrezi beneficiarului si acele “dll”-uri, altfel programul n-o să funcţioneze.

Înapoi la topic: cel care “leagă” toate componentele programului tău este o unealtă care se cheama “linker” şi nu trebuie confundat cu compilatorul, compilatorul este cel care transformă codul C/C++ in cod-maşină.

Ei bine, linker-ul poate fi informat despre locaţia bibliotecilor in doua moduri: fie ii dai calea absolută (adică de genul “C:\wxwidgets\libwx.a”), fie ii indici folderul şi biblioteca (de genul -LC:\wxwidgets -lwx). Tu ai rezolvat folosind prima metodă, dupa ce iniţial ai incercat să foloseşti greşit a doua metodă.

1 Like

Deci librariile .a sunt mai importante?Ele ajung in programul final care trebuie livrat?Da?

Nu e chestie de importanţă, ci de modul în care vrei să fie programul tău livrat. Dacă foloseşti “.a”, aplicaţia ta va fi fară dependenţe, va fi un singur mare “.exe” (uneori executabilul poate deveni foarte mare, de ordinul zecilor de MB).

Dacă foloseşti “dll”-uri, aplicaţia va fi mică (de zeci sau sute de KB), dar trebuie mereu sa fie însoţită de acele dll-uri.

Avantajul la biblioteci statice este ca programul tau va fi standalone, il duci pe alt computer si va functiona fara probleme. Dezavantajul e ca daca ai vreo 10 programe facute cu acea bibliotecă, spatiul ocupat va fi foarte mare.

Dezavantajul la dll este ca va trebui sa ai dll-uri si pe calculatorul beneficiarului. Avantajul este ca trebuie sa-l ai intr-un singur exemplar, dll-ul va fi partajat. Daca ai 10 programe, o sa-ti ocupe in total 1MB + dimensiunea dll-ului.

De altfel, in sistemele de tip Linux, “dll”-urile au o denumire ceva mai intuitivă, se cheama “.so” (shared object, adică “obiect partajat”).

2 Likes