Salut!

Am pierdut toata noaptea incercand sa imi dau seamna de ce naiba apar
niste undefined reference-uri si nu ma prind de nici o culoare. Sper sa ma
poata ajuta cineva. Multumesc.

Sistemul este:
  gcc version 3.0.4 (Mandrake Linux 8.2 3.0.4-3mdk)
  GNU ld version 2.12.90.0.3 20020323
  binutils-2.12.90.0.3-1mdk
  Linux localhost.localdomain 2.4.18-6mdk #1 Fri Mar 15 02:59:08 CET 2002 i686 unknown

Am o aplicatie comerciala care ofera niste librarii (compilate dinamic) si
.h-urile necesare. Plus documentatia de utilizare. .h-urile sunt instalate
in /opt/tpssna/src iar .a-urile in /opt/tpssna/lib

Fac un programel in C care foloseste functii din aplicatia asta:

[radu@localhost cpic_proxy]$ cat test.c
#include "cpi.h"
[...]
cminit(cid, sdn, &cpirc);
[...]

Bun, il compilez:
[radu@localhost cpic_proxy]$ gcc test.c -I/opt/tpssna/src -L/opt/tpssna/lib -lxcpi -o 
test
[radu@localhost cpic_proxy]$

Si-l rulez:

[radu@localhost cpic_proxy]$ ./test
cminit error, rc=20

E ok, deci merge (nu conteaza ce a afisat, e ok asa).

Acuma apare problema mea: am nevoie sa fac o librarie wrapper in C++ in
care sa am un obiect ale carui metode apeleaza functiile oferite de
aplicatia comerciala. Sursa bibliotecii se afla in "cpic_proxy.cc",
insotita si de un "cpic_proxy.h".

[radu@localhost cpic_proxy]$ g++ cpic_proxy.cc -I./ -I/opt/tpssna/src -c
[radu@localhost cpic_proxy]$ g++ -shared -o libcpic_proxy.so cpic_proxy.o
[radu@localhost cpic_proxy]$ file cpic_proxy.so
cpic_proxy.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not 
stripped

Ok, acuma am un programel de test:

  [radu@localhost cpic_proxy]$ cat test.cc
  #include "cpic_proxy.h"
  [...]
  int main(void)
  {
          cpic_class cpic;
          cpic.connect();
          cpic.disconnect();
  }
care foloseste biblioteca. Cand il compilez:

[radu@localhost cpic_proxy]$ g++ test.cc -I/opt/tpssna/src -I./ -L/opt/tpssna/lib -L./ 
-lxcpi -lcpic_proxy
.//libcpic_proxy.so: undefined reference to `cminit(unsigned char*, unsigned char*, 
int*)'
[...]
collect2: ld returned 1 exit status
[radu@localhost cpic_proxy]$

primesc undefined reference-uri cum se vede aici (sunt multe, pentru toate
functiile apelate din biblioteca comerciala, aici le-am substituit cu
"[...]").

Durerea mea este: de ce (naiba|dracu'|f****|etc) da "undefined reference"?
cand:
- biblioteca comerciala este si merge (cu programelul de test in versiunea .c)
- am indicat la linia de comanda -I-urile, -L-urile si -l-urile corecte ca
sa gaseasca tot ce are nevoie?

Daca ati citit pana aici va mai multumesc odata.

Ave,
  Socrate

-- 
Radu Filip
                           Network Administrator @ Technical University of Iasi
[EMAIL PROTECTED]             Information Technology and Communication Center
http://socrate.tuiasi.ro/  [EMAIL PROTECTED] | http://ccti.tuiasi.ro/

---
Pentru dezabonare, trimiteti mail la 
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/


Raspunde prin e-mail lui