Я знаю, что вы сказали, что нет никакого висящего внешнего "C" ... Но почему это может быть проблемой, учитывая, как вы компилируете с gcc , а не g ++ ??? (Который, на самом деле, с радостью обработает smsdk_ext.cpp как C и НЕ C ++ файл... Со всеми ошибками и болью, которые возникают из-за этого ...)
Часто вы будете видеть такие сообщения об ошибках, когда неправильные включаемые файлы помечены extern "C" ,(Или неправильно помечены в зависимости от обстоятельств.)
Ваши сообщения об ошибках также указывают на сложность перегрузки функций ...
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)'
И проблемы с системными файлами (компилятором).
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
Таким образом, либо установка вашего компилятора действительно неработоспособна, ИЛИ ...
В качестве альтернативы, другой подход - начать с минимального Hello World Запрограммируйте и посмотрите, скомпилируется ли это.Затем наращивайте, включая то, что вам нужно, пока не столкнетесь с проблемой.(Или возьмите существующее программное обеспечение и упростите его, пока не найдете проблемную область. Начните с одной строки "g ++" , скопируйте файл и уменьшайте его до тех пор, пока проблема не исчезнет. Возможно, у вас есть # define или typedef , что конфликтует с чем-то в системном файле.)