有关此错误的任何想法?
gcc -oxtmpmain.exe xtmpmain.o fiber_driver.o xtmp_options.o getopt.o D:\usr\xtensa\XtDevToolsDE\in stall\tools\RB-2008.4-win32\XtensaTools\lib\iss\xtmp.lib xtmpmain.o(.text+0x213):xtmpmain.c: undefined reference to `_uart_setup' xtmpmain.o(.text+0x2da):xtmpmain.c: undefined reference to `_uart_cleanup' collect2: ld returned 1 exit status make: *** [xtmpmain.exe] Error 1
答案 0 :(得分:4)
这是一个明显的链接错误。您正在调用链接器未找到的两个函数uart_setup()
和uart_cleanup()
。
可能有多种原因,包括(但肯定不限于):
没有更多细节,很难确定。
答案 1 :(得分:1)
这意味着xtmpmain.c调用名为uart_setup()
和uart_cleanup()
的函数,但链接器找不到它们。您可能需要包含库,或者根据Win32 API为Windows实现这些功能。
有些“插入问题”是:
__cdecl
和__stdcall
是非常不同的动物。它们通常会产生不匹配的导出符号名称以确保安全,这种错误可能就是这种情况的症状。如果这是一个移植项目,那么UART相关功能的原始实现很可能是以平台相关的方式编写的。在这种情况下,它们通常会被某个依赖于编译时平台的#ifdef
格式保护。
要解决这个问题,您需要为此平台实现它们,其风格与其在应用程序其余部分中的用法一致,并且同样受到保护。