硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1245|回复: 1
收起左侧

[有问必答] 不使用microlib,添加FILE __stdout后,编译出错

[复制链接]

11

主题

30

回帖

63

积分

初级会员

积分
63
发表于 2022-7-2 12:37:59 | 显示全部楼层 |阅读模式
工程使用C++,不能使用microlib库,在文件中添加支持函数如下
[C] 纯文本查看 复制代码
int _ttywrch(int ch)    
{
    ch=ch;
	return ch;
}
//标准库需要的支持函数                 
struct __FILE 
{ 
	int handle; 
	/* Whatever you require here. If the only file you are using is */ 
	/* standard output using printf() for debugging, no file handling */ 
	/* is required. */ 
}; 
/* FILE is typedef’ d in stdio.h. */ 
FILE __stdout; 
FILE __stdin; 
//定义_sys_exit()以避免使用半主机模式    
void _sys_exit(int x) 
{ 
	x = x; 
} 


编译报错
PSDK_SIimbal_SBGC\PSDK_SIimbal_SBGC.axf: Error: L6200E: Symbol __stdout multiply defined (by stdio_streams.o and main.o).
PSDK_SIimbal_SBGC\PSDK_SIimbal_SBGC.axf: Error: L6200E: Symbol __stdin multiply defined (by stdio_streams.o and main.o).
删除FILE __stdout;FILE __stdin;后,printf不能使用。因为使用的部分库中可能使用了printf函数,所以不能删除这两个函数
这种问题怎么解决啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2022-7-3 00:13:34 | 显示全部楼层
直接使用MDK RTE一键添加,非常方便,需要用户处理使用C标准库还是微库的问题了。

image.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-19 13:06 , Processed in 0.180103 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表