PDA

View Full Version : [C/C++] Richiamare una funzione C++ da un programma C


Gica78R
02-02-2006, 22:05
Ciao!

Una domanda probabilmente stupida, ma alla quale non so rispondere:
posso invocare una funzione scritta in C++ da un programma scritto in C? Se si, come? :D


Grazie

kk3z
02-02-2006, 22:31
Boh, ma non fai prima a vedere te? Fai un file c e un file cpp e poi...

Gica78R
03-02-2006, 05:38
Boh, ma non fai prima a vedere te? Fai un file c e un file cpp e poi...

:stordita:

Ho gia' provato scrivendo una funzione C++ in due files (.h e .cpp) e poi richiamandola dal main di un programma C (includendo l'header), ma cosi' ovviamente non funziona :rolleyes:
Dovrebbe esserci un altro modo, analogo ad esempio a quello per invocare una routine assembly da C (cosa che non ho mai fatto) :fagiano:

Ciao

ilsensine
03-02-2006, 08:09
Nell'header:

#ifdef __cplusplus
extern "C" {
#endif

void funzione(char *qualcosa);

#ifdef __cplusplus
}
#endif


Nel file cpp:


extern "C" void funzione(char *qualcosa)
{
std::cout << qualcosa << std::endl;
}


nb ovviamente le funzioni extern "C" non possono essere soggette a overload.

Gica78R
03-02-2006, 10:44
Grazie mille :)

A quanto ho capito, comunque, devo modificare tutti i file scritti in C++ per aggiungere extern "C" alle funzioni che mi interessano, e compilare anche i file C col compilatore C++. Io speravo di non doverli toccare affatto :cry:

Se puo' essere utile anche ad altri, ho appena trovato questo:
How to mix C and C++ (http://geneura.ugr.es/~jmerelo/c++-faq/mixing-c-and-cpp.html)


Ciao e grazie ancora dell'aiuto :)

ilsensine
03-02-2006, 10:53
e compilare anche i file C col compilatore C++
No questo non è necessario.