Это означает, что xtmpmain.c вызывал функции с именами uart_setup()
и uart_cleanup()
, но компоновщик их не нашел. Вам, вероятно, нужно включить библиотеку или реализовать эти функции для Windows в терминах Win32 API.
Вот некоторые из них: «это включено в вопросы»:
- Объявлены ли функции?
- Определены ли функции (т.е. реализованы)?
- С такими же именами?
- Были ли эти определения исключены препроцессором?
- Существует опция gcc, которая контролирует наличие или отсутствие начального подчеркивания. Вы случайно не использовали это для одного файла, а не для других, верно?
- Проверьте объявленное соглашение о вызовах.
__cdecl
и __stdcall
очень разные животные. Они обычно выдают несоответствующие экспортированные имена символов для безопасности, и эта ошибка может быть симптомом этого.
Если это проект переноса, то вполне вероятно, что исходная реализация функции, связанной с UART, написана в зависимости от платформы. В этом случае они часто будут защищены #ifdef
некоторой формы, которая зависит от платформы времени компиляции.
Чтобы решить эту проблему, вам необходимо реализовать их для этой платформы в стиле, совместимом с их использованием в остальной части приложения, и аналогичным образом защищенным.