 <p>I know you said there's no dangling <strong>extern "C"</strong>... But why would that even be an issue given how you are <strong>compiling with <em>gcc</em> and not <em>g++</em>???</strong> (Which will, in fact, happily treat <em>smsdk_ext.cpp</em> as a <strong>C</strong> and NOT <strong>C++</strong> file... With all the errors and pain that come from doing so...)</p> <hr> <p>Often you will see such error messages when the wrong include files are tagged <strong>extern "C"</strong>. (Or not properly tagged as the case may be.)</p> <p>Your error messages also indicate difficulty overloading functions...</p> <pre><code>platform.h: In function ‘double fsel(double, double, double)’: platform.h:470: error: declaration of C function 'double fsel(double, double, double)' conflicts with platform.h:466: error: previous declaration 'float fsel(float, float, float)' </code></pre> <p>And problems with system (compiler) files.</p> <pre><code>In file included from /usr/include/sys/signal.h:104, from /usr/include/signal.h:5, from /usr/include/pthread.h:15, from /cygdrive/... /usr/include/cygwin/signal.h:74: error: expected ‘;’ before ‘*’ token /usr/include/cygwin/signal.h:97: error: ‘uid_t’ does not name a type In file included from /usr/include/signal.h:5, from /usr/include/pthread.h:15, from /cygdrive/... /usr/include/sys/signal.h:163: error: ‘pthread_t’ was not declared in this scope /usr/include/sys/signal.h:163: error: expected primary-expression before ‘int’ /usr/include/sys/signal.h:163: error: initializer expression list treated as compound expression </code></pre> <p><strong>So either your compiler installation is really munged OR...</strong></p> <hr> <p>Alternatively, another approach is to start with a minimal <em>Hello World</em> program and see if that compiles. Then build up, including what you need to, until you hit a problem. (Or take the existing software and simplify it down until you find the problem area. Start with one <em>"g++"</em> line, copy the file, and pare it down until the problem goes away. Perhaps you have a <em>#define</em> or <em>typedef</em> that conflicts with something in a system file.)</p>