Portál AbcLinuxu, 6. května 2025 13:59

Dotaz: Použití modulu napsaného v C++ v C

1.7.2009 13:20 Tojaj
Použití modulu napsaného v C++ v C
Přečteno: 502×
Odpovědět | Admin

Zdravím,

píšu program v C a chtěl bych využít modul napsaný v C++.

Modul poskytuje objekt implementující funkčnost, kterou bych rád využil. S objektem v C asi moc nepochodím a tak mě napadlo, že bych do zmíněného modulu dopsal funkci, která by s objektem manipulovala. Do hlavičkového souboru bych přidal deklaraci této funkce a z C pak pracoval pouze s tou funkcí.

Bylo by todle možné? Šel by vůbec program napsaný v C slinkovat s modulem napsaným v C++?

 

Díky za každou radu.

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.7.2009 13:58 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Použití modulu napsaného v C++ v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
IMO by to mělo takhle jít udělat.
In Ada the typical infinite loop would normally be terminated by detonation.
1.7.2009 16:09 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Použití modulu napsaného v C++ v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jde to. Do hlavičkového souboru dát deklaraci funkce, která má zpřístupňovat funkcionalitu v C++ do C, do bloku extern "C" a C++ deklarace (asi včetně toho extern) schovat do #ifdef __cplusplus.

Pak je ale nejspíš nutné ten program slinkovat C++ linkerem, už jen kvůli globálním C++ objektům (inicializují se při startu programu). Možná tento problém jde vyřešit i jinak.

Viděl jsem např. rozšiřující moduly Pythonu, který poskytuje C API, takto podobně udělané v C++. Dokud to jde slinkovat, mělo by být možné k C přimíchat i jiné jazyky, např. Fortran, Haskell (o tom ale nic moc nevím)...
Pavel Stárek avatar 1.7.2009 16:32 Pavel Stárek | skóre: 44 | blog: Tady bloguju já :-) | Kolín
Rozbalit Rozbalit vše Re: Použití modulu napsaného v C++ v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nějaké povídání o této problematice. Tady se taky něco najde. A ještě tady něco je. Obecně jde o to, správně použít zápis extern "C" v C++ modulu. Jak jsem vyčetl tak by mělo být možno (asi i) volat metody z C++ tříd z C programu a samozřejmě to jde i naopak (volat z C++ funkce v C).
Kdo chce, hledá způsob; kdo nechce, hledá důvod.
2.7.2009 11:56 Tojaj
Rozbalit Rozbalit vše Re: Použití modulu napsaného v C++ v C
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tak to vyzkouším.

Všem děkuju ;)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.