2

I have to call a c function declared in a lib file from c++. What instructions/attributes/configuration I have to set for this?

reshefm
  • 5,757
  • 7
  • 35
  • 40

3 Answers3

5

Do you have a header file for the library? If so it should have

extern "C" {
blah blah
}

stuff in it to allow it to be used by C programs. If not, then you can put that around the include statement for the header in your own code. E.g.

extern "C" {
    #include "imported_c_library.h"
}
AlastairG
  • 3,754
  • 4
  • 23
  • 40
2

ensure you put extern "C" before the declaration of the function if it isn't already in the header.

CashCow
  • 29,989
  • 4
  • 56
  • 89
1

If you're writing the header files yourself, it's often nice to do something like this

 #ifdef __cplusplus
 extern "C" {
 #endif

...

 #ifdef __cplusplus
 }
 #endif

so that this gets ignored by your c compiler, but picked up by c++ one. Incidentally, for a good discussion of why you need this, check out

Why do we need extern "C"{ #include <foo.h> } in C++?

Community
  • 1
  • 1
pythonic metaphor
  • 9,916
  • 16
  • 64
  • 105