张志坚 发表于 2025-4-25 11:08:52

求助用AI8051U写的USB不停电下载的程序编译问题|已解决


各位大佬,我按照视频用AI8051U写的USB不停电下载的程序,结果编译报错
*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:printf_usb?
    MODULE:.\Objects\main.obj (main)
    ADDRESS: FF250EH*** ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:printf_usb?
    MODULE:.\Objects\main.obj (main)
    ADDRESS: FF250EH
但是我把stc32_stc8_usb.h文件写到开始了,并且把.H和.lib文件也放到了目录下面。求大佬指导下,工程文件和照片在附件中,感谢。后来我用老师案例的代码和文件也一样的问题

国芯人工智能 发表于 2025-4-25 11:12:00

问题分析

根据您提供的错误信息,ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: printfusb,这表明在编译过程中,链接器无法找到printfusb函数的定义。这种错误通常是由于以下几种原因引起的:

1. 函数未定义:printfusb函数在代码中声明了,但没有在项目中提供其实现。
2. 库文件未正确链接:如果printfusb函数定义在某个库文件中,可能该库文件未正确链接到项目中。
3. 头文件未正确包含:如果printfusb函数的声明在某个头文件中,可能该头文件未正确包含在项目中。

解决步骤

1. 检查函数定义

首先,确保printfusb函数在项目中已经定义。您可以在项目中搜索printfusb,看看是否有对应的实现代码。如果没有,您需要提供该函数的实现。

2. 检查库文件链接

如果printfusb函数定义在某个库文件中,您需要确保该库文件已正确链接到项目中。具体步骤如下:
确认库文件路径:确保库文件(.lib或.a文件)已放置在项目目录中,或者其路径已正确配置在编译器的库搜索路径中。
链接库文件:在编译器的链接器设置中,确保已添加该库文件。通常可以在项目的链接器设置中添加库文件,或者在代码中使用#pragma指令链接库文件。

3. 检查头文件包含

如果printfusb函数的声明在某个头文件中,您需要确保该头文件已正确包含在项目中。具体步骤如下:
确认头文件路径:确保头文件(.h文件)已放置在项目目录中,或者其路径已正确配置在编译器的头文件搜索路径中。
包含头文件:在代码中使用#include指令包含该头文件。

4. 检查编译器设置

有时,编译器的设置可能会导致链接错误。您可以检查以下设置:
编译器版本:确保使用的编译器版本与库文件兼容。
编译选项:检查编译选项,确保没有禁用某些必要的功能或库。

示例代码

假设printfusb函数定义在usblib.c文件中,并且其声明在usblib.h文件中,您可以按照以下步骤操作:

1. 包含头文件:
   c
   #include "usblib.h"

2. 链接库文件:
   在编译器的链接器设置中添加usblib.lib文件,或者在代码中使用#pragma指令:
   c
   #pragma comment(lib, "usblib.lib")

3. 调用函数:
   在代码中调用printfusb函数:
   c
   printfusb("Hello, USB!");

总结

通过以上步骤,您应该能够解决ERROR L128: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: printfusb的编译错误。如果问题仍然存在,建议您检查项目的文件结构和编译器设置,确保所有必要的文件和库都已正确配置。

希望这些建议对您有所帮助,祝您顺利解决问题!

[本文内容由国芯人工智能辅助生成,仅供参考]

ercircle 发表于 2025-4-25 11:18:44

编译选项不对

乘风飞扬 发表于 2025-4-25 11:28:12

项目设置里改成 Large 模式就可以:



如果想用 Huge 模式的话,需要使用 Huge 模式的 lib 库文件。

张志坚 发表于 2025-4-25 13:07:33

乘风飞扬 发表于 2025-4-25 11:28
项目设置里改成 Large 模式就可以:




感谢,真是这个问题

张志坚 发表于 2025-4-25 13:07:58

ercircle 发表于 2025-4-25 11:18
编译选项不对

感谢,真是这里出了问题
页: [1]
查看完整版本: 求助用AI8051U写的USB不停电下载的程序编译问题|已解决