[ erkan @ 16.08.2006. 11:09 ] @
Pozdav svima,

ovu sam temu vec postavio na C++ za pocetnike, ali mislim da sam promasio
tako da je ponavljam ovdje. Moderatorima se izvinjavam .

Volio bih da ubacim jedan library u svoj projekat. Imam LIB biblioteku
i nakon sto odradim add->Project (ili jednostavno rucno dodam path za library)
ja i dalje ne mogu pristupiti klasama niti funkcijama definisanim u lib-u.
Moze li neko reci kako da to odradim...

pozdrav

[ itf @ 16.08.2006. 11:15 ] @
Moraš dodati prototipe tih funkcija i klasa u svoj program. Najbolje ti je kada radiš LIB da sve njegove prototipe funkcija i klasa spremiš u zasebnu H (header) datoteku i samo ju dodaš

#include "MojLIB.h"

u programu gdje to želiš koristiti.
[ erkan @ 16.08.2006. 14:07 ] @
ok, zahvaljujem.
Probao sm i radi ali bez prototipova.
Ono sto sam promasio je da kad ukljucim neki header fajl koji je
iz libraria onda javlja gresku. Rjesenje je bilo da se u include
path-u projekta postave putevi koje LIB koristi.
Poz.


[ erkan @ 17.08.2006. 07:11 ] @
hm, i dalje imam problem...
kada definisem promjenljive npr pointer na klasu
koja je iz LIB-a, onda je ok i kompajlira se, medjutim
kada pokusam da instanciram klasu javi se masa gresaka
pri linkovanju: Unresolved external ...ime funkcije ... referenced from... i navede ime funkcije
clanice klase... (krene od destruktora i konstruktora i onda navede
sve metode koji pripadaju klasi)



[Ovu poruku je menjao erkan dana 17.08.2006. u 08:28 GMT+1]
[ itf @ 17.08.2006. 07:48 ] @
Moraš dodati prototipe funkcija i klasa iz LIB-a. Nemoj se zavaravati da to ne treba. Mislim da se u nekim situacijama treba dodati i ključna riječ extern ispred nekih izjava, no zaboravio sam točno gdje, pa pokušaj i to dodati ispred nekih deklaracija...
[ erkan @ 17.08.2006. 13:17 ] @
Da u pravu si....
Ovako,
posto mi nije uspjelo onda sam napravio svoj library sa klasom jednom
i sa jednom funkcijom koja nije clanica klase.
Nakon sto dodam LIB fajl u svoju primitivnu aplikaciju (dugmic samo)
i pozvem funkciju iz LIB-a to radi ok... (naravno, prvo sam postavio prototip funkcije)
Medjutim kada pozovem klasu onda nastaje problem.
Kada napravim pointer klase i kompajliram onda je OK (naravno jer ima prototip i ocekuje
da klasa postoji), medjutim, kada napravim nesto konkretno sa tim pointerom, recimo
kreiram instancu klase onda je problem

Code:

// prototip
extern void MsgFromLibFunction();
class myLibClass;
...
MsgFromLibFunction(); // funkcija iz librarija
myLibClass *clsLib = NULL; // klasa iz librarija
clsLib = new myLibClass(); // OVDJE JE PROBLEM




greska koju dobijam je
Code:

[C++ Error] SImpleForm.cpp(40): E2450 Undefined structure 'myLibClass'


Jos da dodam da mi je ova stva pocela jesti zivce :)

[Ovu poruku je menjao erkan dana 17.08.2006. u 14:30 GMT+1]
[ itf @ 17.08.2006. 13:51 ] @
Jesi probao dodati extern i ispred definicije klase?
[ erkan @ 17.08.2006. 14:10 ] @
U prototipu jesam ali nece, evo ponovo sam pokusao
i evo greske:
Code:
[C++ Error] SImpleForm.cpp(18): E2092 Storage class 'extern' is not allowed here
.
...
Cijeli problem rjesava ukljucivanje header fajla iz LIB-a, ali u tom slucaju ne vidim
svrhu LIB fajla. Sta ce mi LIB ako mogu direktno ukljuciti header-e i koristiti klase definisane u cpp fajlovima?!
[ itf @ 17.08.2006. 14:12 ] @
U tome i jest stvar. Ti iz header-a vučeš samo definicije klasa i funkcija, dok se njihova tijela nalaze u LIB-u, a to je ono što je bitno.
[ gosha @ 17.08.2006. 14:27 ] @
Pa javlja ti gresku jer kompajler ne moze da nadje definiciju klase, stavio si samo prototip.
Izbaci prototip i stavi #include od klase.

Kad ti javi greska "Unresolved external" onda nisi dobro podesio path-ove ili nisi ukljucio lib u linker opcijama.


Poz. Gosha.
[ erkan @ 17.08.2006. 14:31 ] @
Da, izgleda da ste u pravu.
Probao sam da promjenim ime cpp fajla, ponovo izbildao projekat
bez problema i radi.
Hvlaa puno i pozdrav. Nadam se da je ovo kraj misterije sa LIB-om :)