The extern"C" tells the compiler that it shouldn't mangle the names of the functions.
C++ lets you overload functions, but linkers deal with symbols. So if file1.cpp calls foo(int) and foo(double) which are defined in file2.cpp, how does the linker know which call refers to which function? The answer is that the compiler "mangles" the names by combining the function names and their parameters. The linker sees these names and sorts it all out.
In C, the names are not mangled. Adding extern"C" tells the compiler that it shouldn't mangle the names. This way you can call a C function from code compiled with C++ or vice versa.