Opkald c-funktion i en lib-fil fra c ++

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skal ringe en c-funktion erklæret i en lib-fil fra c ++. Hvilke instruktioner/attributter/konfiguration skal jeg indstille til dette?

Bedste reference


Har du en headerfil til biblioteket? Hvis det er tilfældet, skal det have det


extern "C" {
blah blah
}


ting i det for at tillade det at blive brugt af C-programmer. Hvis ikke, så kan du sætte det omkring inkluderingserklæringen til overskriften i din egen kode. F.eks.


extern "C" {
    #include "imported\_c\_library.h"
}

Andre referencer 1


sørg for at sætte ekstern 'C' før funktionens erklæring, hvis den ikke allerede er i overskriften.

Andre referencer 2


Hvis du selv skriver hovedtekstfilerne, er det ofte rart at gøre noget som dette


 #ifdef \_\_cplusplus
 extern "C" {
 #endif

...

 #ifdef \_\_cplusplus
 }
 #endif


så det bliver ignoreret af din c compiler, men hentes af c ++ one. For en god diskussion af hvorfor du har brug for dette, check ud


Hvorfor har vi brug for ekstern 'C' {#include < foo.h > } i C ++?