PDA

View Full Version : Invocare da un file C una funzione di un file C++


anx721
04-12-2004, 18:16
Salve, c'è un modo per invocare da un file C compilato con gcc una funzione (globale, non di una classe) che è definita in un file compilato con g++? Il contrario lo si puo fare dichiarando le funzioni C con extern "C"; quello che voglio io si puo fare?

/\/\@®¢Ø
04-12-2004, 18:50
La mia puo' apparire una risposta ovvia, ma hai provato con

extern "C++"

:D

Battute a parte dovrebbe funzionare proprio cosi' (almeno col gcc), ma non l'ho mai provato.

GioVesas
05-12-2004, 09:52
La definizione che si deve fare è tipo la seguente

extern "C" bool __stdcall MyFunction(parametrs)
{
.
.
.
.
return true;
}

per evitare la tipica "decorazione C++" a livello di globale

anx721
05-12-2004, 20:22
ha funzionato, ma invece di usare

__stdcall

che mi dava errore in fase di compilazione ho dovuto usare

__attribute__((__stdcall__))

(sono sotto linux con gcc)

anx721
05-12-2004, 20:34
facendo un po di prove ho visto che basta

extern "C"

prima della definizione della funzione nel file c++ perchè questa possa essere chiamata da un file C; i vari file oggetti engono linkati come moduli c++