学习ICE笔记1:遇到错误,no RTTI-data Received.

解决方法:

需要打开Project ->C++>C++ Language->Enable Run-time Type Infomation(RTTI)

其余需要的工程设定:

在Project ->C++>Preprocessor

需要设置附加包含目录:

C:/Ice-3.2.0-VC60/include,C:/Ice-3.2.0-VC60/include/stlport,.  (注意还有个点)

Link需要加上连接库

iced.lib iceutild.lib

Link的Input选项里加上

附加库目录 C:/Ice-3.2.0-VC60/lib

在资源选项里,.ice文件需要设置Custom Build

C:/Ice-3.2.0-VC60/bin/slice2cpp.exe    -I C:/Ice-3.2.0-VC60/slice   ../inc/LoveZz.ice  --output-dir .

Outputs

LoveZz.h
LoveZz.cpp

在stdafx.h里最好加上这一句话,以免出现STL的很多错误

#define WIN32_LEAN_AND_MEAN        // Exclude rarely-used stuff from Windows headers
#if !defined(NDEBUG) && !defined(_STLP_DEBUG)
#   define _STLP_DEBUG
#endif

还有自动生成的CPP文件LoveZz需要预编译头。在预编译头里选择

Automatic use of precompiled headers Though header:stdafx.h

大概就这些吧,都是从Demo的工程里找的。

Rebuild started: Project: RS485-4G-DTU_HAL *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\keil_v5\ARM\ARMCC\Bin' Rebuild target 'RS485-4G-DTU_HAL' compiling stm32f1xx_it.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. assembling startup_stm32f103xe.s... compiling main.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_rcc.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling usart.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_msp.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling gpio.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_gpio.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_gpio_ex.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling dma.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_cortex.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_dma.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_uart.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_rcc_ex.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_pwr.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_flash_ex.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_flash.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling stm32f1xx_hal_exti.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. compiling system_stm32f1xx.c... Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. "RS485-4G-DTU_HAL\RS485-4G-DTU_HAL.axf" - 19 Error(s), 0 Warning(s). Target not created. Build Time Elapsed: 00:00:01
最新发布
08-08
你遇到的编译错误如下: ``` Fatal error: C3900U: Unrecognized option '-no-multibyte-chars'. ``` 这是 **Keil MDK 编译器**在编译过程中遇到的一个 **不支持的编译器选项**错误。这个选项 `-no-multibyte-chars` 通常是 **GCC 编译器**使用的选项,而你当前使用的是 **ARMCC(ARM Compiler 5)**,它不支持这个参数。 --- ## ✅ 问题原因 ### ❗核心原因: 你在 Keil MDK(使用 ARMCC 编译器)中配置了 **仅适用于 GCC 编译器** 的编译选项:`-no-multibyte-chars`。 ### ❗具体说明: - `-no-multibyte-chars` 是 GCC 编译器的一个选项,用于**禁用多字节字符处理**(例如中文字符)。 - ARMCC(Keil 使用的默认编译器)**不支持这个选项**,所以报错。 --- ## ✅ 解决方法 ### ✅ 方法一:移除不支持的编译选项 #### 步骤如下: 1. 打开你的 Keil 工程; 2. 右键点击项目 → `Options for Target...`; 3. 切换到 `C/C++` 标签页; 4. 在 `Misc Controls` 输入框中,找到并 **删除 `-no-multibyte-chars`**; 5. 点击 `OK`,重新编译工程。 > 📌 注意:如果你看到其他 GCC 特有的参数(如 `-fno-exceptions`, `-fno-rtti`),也应一并删除,因为它们在 ARMCC 中无效。 --- ### ✅ 方法二:改用 GCC 编译器(可选) 如果你确实需要使用 `-no-multibyte-chars` 等 GCC 特性,可以考虑将 Keil 工程切换为使用 **ARM GCC 编译器**,但这需要重新配置工具链。 #### 步骤如下: 1. 安装 [GNU ARM Eclipse 工具链](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm); 2. 在 Keil 中设置为使用外部 GCC 工具链; 3. 修改编译选项以适配 GCC; 4. 重新编译。 > ⚠️ 此方法复杂度较高,适合高级用户或需要特定 GCC 特性的项目。 --- ## ✅ 附加建议 ### 1. 检查 `User` 标签页中是否添加了错误的编译参数 - 有些项目会在 `User` 标签页中调用自定义编译脚本,检查是否有脚本传入了 `-no-multibyte-chars`。 ### 2. 检查是否从 STM32CubeIDE 导出的工程 - 如果你是从 STM32CubeIDE(默认使用 GCC)导出的工程,导入 Keil 后未清理编译参数,就会出现此类问题。 --- ## ✅ 总结 | 问题 | 原因 | 解决方法 | |------|------|----------| | `Unrecognized option '-no-multibyte-chars'` | 使用了 GCC 专用参数,但编译器是 ARMCC | 移除该参数或改用 GCC 工具链 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值