Portál AbcLinuxu, 6. května 2025 13:59
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.
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)...
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).
Tak to vyzkouším.
Všem děkuju ;)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.