当前位置:   article > 正文

VS CODE嵌入式Arm CMSIS Solution插件编译调试环境搭建_cmsis solution not

cmsis solution not

插件安装

百度

bd4a864af763413699f69fa478c91fc6.png

移植错误

c/c++混编build错误

问题现象:我用CMSIS导入一个keil5的c和c++混合编程的项目,在keil中已经编译通过并下载正常运行。但是在VS CODE中搭建好CMSIS插件环境后导入上面所述的keil5的c和c++混合编程的项目,build失败。并提示一下报错: “/Core/Src/i2c.c error: invalid argument '-std=c++11' not allowed with 'C'” “Core/Src/dma.c error: invalid argument '-std=c++11' not allowed with 'C'” 等等。

解决方式:找到.cproject.yml文件删除- -stdc++11

e0f29ea3eea540b6bca5072784e66614.png

unknown type name 'bool'

怎么解决c和c++混合编程时,在c文件中编译出现bool错误,如下data_ring_buffer.h:46:1: error: unknown type name 'bool'

添加:#include <stdbool.h>  头文件

直接将c/c++混编 keil工程导入CMSIS出现invalid argument '-std=c++11' not allowed with 'C'

stm32f4xx_it.c
error: invalid argument '-std=c++11' not allowed with 'C'

解决办法:在.cproject.yml文件添加以下两个命令

  1. - -xc++
  2. - -std=c++11

c/c++混合编译.h头文件无法识别关键字class

问题现象:21.h:26:1: error: unknown type name 'class'
   26 | class DF_to_CAT021
      | ^

 解决办法:在.cproject.yml文件添加以下两个命令

  1. - -xc++
  2. - -std=c++11
  3. 在 Keil 中,-xc++ 和 -std=c++11 是与 C++ 编译相关的选项。让我为您解释一下它们的含义和用法:
  4. -xc++:
  5. 这个选项告诉编译器使用 C++ 编译器来处理源代码文件。默认情况下,Keil 使用 C 编译器,但是如果您的项目中包含 C++ 代码,您需要显式地指定 -xc++ 选项。
  6. 在 Keil 中,您可以通过以下步骤启用 C++ 编译器:
  7. 打开您的 Keil 项目。
  8. 转到 “Options for Target”(目标选项)。
  9. 在 “C/C++” 选项卡中,找到 “Misc Controls”(其他控制)。
  10. 在 “Misc Controls” 中添加 -xc++。
  11. 点击 “OK” 以保存更改。
  12. -std=c++11
  13. 这个选项指定了 C++ 标准的版本。在这种情况下,-std=c++11 表示使用 C++11 标准。
  14. C++11 是 C++ 的一个版本,引入了许多新特性,例如 lambda 表达式、智能指针、范围循环等。
  15. 如果您的项目中使用了 C++11 特性,您需要在 Keil 中设置 -std=c++11 选项。
  16. 您可以按照以下步骤设置 C++11 标准:
  17. 打开您的 Keil 项目。
  18. 转到 “Options for Target”(目标选项)。
  19. 在 “C/C++” 选项卡中,找到 “Misc Controls”(其他控制)。
  20. 在 “Misc Controls” 中添加 -std=c++11
  21. 点击 “OK” 以保存更改。

keil里面是这样:

生成的.cproject.yml原来是这样

没有            - -xc++

所以引发上面“invalid argument '-std=c++11' not allowed with 'C'”和“c/c++混合编译.h头文件无法识别关键字class”这两个错误。

  1. project:
  2. packs:
  3. - pack: Keil::STM32F4xx_DFP
  4. - pack: ARM::CMSIS@5.9.0
  5. - pack: Keil::ARM_Compiler
  6. setups:
  7. - setup: Options for ADSBOUTF429ZGT6
  8. processor:
  9. fpu: sp
  10. add-path:
  11. - ../Core/Inc
  12. - ../Drivers/STM32F4xx_HAL_Driver/Inc
  13. - ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy
  14. - ../Drivers/CMSIS/Device/ST/STM32F4xx/Include
  15. - ../Drivers/CMSIS/Include
  16. - ../User/Adsb_Out
  17. - ../User/DF_to_CAT021
  18. - ../User/my_Global_Lib
  19. - ../User/easylogger/inc
  20. debug: "on"
  21. define:
  22. - USE_HAL_DRIVER
  23. - STM32F429xx
  24. misc:
  25. - C:
  26. - -std=c99
  27. C-CPP:
  28. - -std=c++11
  29. - -fno-rtti
  30. - -funsigned-char
  31. - -fshort-enums
  32. - -fshort-wchar
  33. - -ffunction-sections
  34. - -Wno-packed
  35. - -Wno-missing-variable-declarations
  36. - -Wno-missing-prototypes
  37. - -Wno-missing-noreturn
  38. - -Wno-sign-conversion
  39. - -Wno-nonportable-include-path
  40. - -Wno-reserved-id-macro
  41. - -Wno-unused-macros
  42. - -Wno-documentation-unknown-command
  43. - -Wno-documentation
  44. - -Wno-license-management
  45. - -Wno-parentheses-equality
  46. CPP:
  47. - -xc++
  48. - -std=c++11
  49. ASM:
  50. - -masm=auto
  51. Link:
  52. - --map
  53. - --load_addr_map_info
  54. - --xref
  55. - --callgraph
  56. - --symbols
  57. - --info sizes
  58. - --info totals
  59. - --info unused
  60. - --info veneers
  61. - --strict
  62. - --summary_stderr
  63. - --info summarysizes
  64. linker:

编译成功

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/708768
推荐阅读
相关标签
  

闽ICP备14008679号