[Lugge] Re: linkare moduli C++ in un main C

  • From: ianezz@xxxxxxxxxx
  • To: lugge@xxxxxxxxxxxxx
  • Date: Mon, 6 May 2002 12:55:55 +0200

Roberto A.Foglietta, pigiando tasti a caso sul citofono, ha scritto:


 >  ----miafun.cpp---
 > 

extern "C" {


 >  int miafunc(char *c,int i, void *p) {
 >   <codice cpp>
 >  }
 > 

}

I nomi dei simboli (funzioni in questo caso) in C++ sono soggetti al
name mangling (ovvero il numero ed il tipo dei parametri viene
incorporato nel nome del simbolo), a meno che la cosa non sia
dichiarata all'interno di un costrutto ``extern "C" { ... }''.

Se vai di nm sul .o del codice C++ vedi che ``miafunc'' in realta` ha
un nome diverso.

Il name mangling viene effettuato perche` in C++, a differenza del C,
puoi avere piu` funzioni/metodi che hanno lo stesso nome, ma con
parametri di tipo diverso, ed il compilatore ed il linker devono
essere in grado di distinguerli (overloading dei metodi/funzioni).




-- 
 |   \    \  | ___|_  |_  | ianezz AT sodalia.it
 |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
_|_/  _\_|  _|____|___|___| http://www.linuxtrent.it

<========----------
 Prima di scrivere in m-list per favore leggi il regolamento
 http://lugge.ziobudda.net/soci/manifesto.htm#list

 Archivio delle e-mail postate in lista
 http://www.freelists.org/archives/lugge/

----------========>
 Incontri in sede: martedì 15:00-18:00 e sabato 9:30-12.30
 

Other related posts: