extern "C" and undefined reference

Diomidis Spinellis dds at aueb.gr
Sun Apr 22 23:14:02 UTC 2007


Andrew Pantyukhin wrote:
> 7zip developers converted some code from C++ to C,
> while leaving the main stand-alone lzma app in C++.
> They use 'extern "C" { }' blocks around #include's
> referencing C headers.
> 
> Everything compiles fine, but "undefined reference"
> errors appear at linkage. The undefined references
> are to the C functions included from withing those
> 'extern "C"' wrappers. I tried to remove the
> wrappers from some files and the amount of errors
> decreased a bit. Is there a better workaround?
> 
> Google came up with two results: remove the wrappers
> or use c++ instead of cc. I'm already using c++.

Many of the C headers are available in a different form for C++ 
programs.  For example, in a C++ program you can #include <cstdio> 
instead of <stdio.h>.

You can use nm(1) on the .o files to see where the problem comes from.

Diomidis


More information about the freebsd-hackers mailing list