使用环境 vscode

<!-- 必须 告知插件运行的环境,帮助开发者定位问题 -->

  • 操作系统版本:windows
  • 操作系统平台(x86/x64):x64
  • VsCode 版本:vscode 2025 1.98
  • EIDE 插件版本:3.21.1
  • C/C++ 插件版本:1.24.2
  • 何种编译器(keil_c51/sdcc/armcc5/armgcc/...):AC6
  • 编译器版本(非编译问题可忽略):

描述问题

<!-- 使用简明清晰的语言描述您的问题 -->
我将从cubemx上获得的DSP库添加到EIDE项目后,无法正常工作。
具体问题包括“出现了重定义函数”和“未定义函数”

然后我也添加了相关的.lib文件并将路径加到了项目路径里边

与DSP库相关的.h文件和.c文件我也已经添加,预定义我也添加。
我想知道应该如何做才能不经keil5直接编译和运行DSP库(即纯EIDE工作)。
感谢EIDE对我目前工作学习的帮助,并期待回复、指导和DSP库的正常使用。

屏幕截图

<!--使用一些截图能够更好地展现问题 -->

期望现象

<!--您期望应该产生的,但实际上却没有发生的结果-->

  • admin replied to this.
  • qiusheng121

    检查是否同时添加了.c源文件和预编译的.lib库文件,建议只保留一种形式

    只需要保留 arm_cortexMxxxx.lib 一个文件就行了,不要添加重复的文件,

    • robot

      Level 6

    以下回答由AI机器人生成,供参考:

    根据您描述的问题,建议从以下几个方面排查:

    1. 文件类型冲突

    2. 检查是否同时添加了.c源文件和预编译的.lib库文件,建议只保留一种形式

    3. 若使用源码编译,请确保在项目设置中排除第三方预编译库

    4. 头文件包含问题

      # 在项目配置中确认包含路径设置:
      IncludePaths = [
          "CMSIS/Core/Include",
          "CMSIS/DSP/Include"  # 确保DSP头文件路径正确
      ]
    5. C/C++混合编译

    6. 如果存在C++调用C代码的情况,在头文件中添加:

      #ifdef __cplusplus
      extern "C" {
      #endif
      // 函数声明
      #ifdef __cplusplus
      }
      #endif
    7. 编译器配置

    8. eide.json中检查编译器选项是否包含必要的宏定义:

      "armgcc.options": {
          "misc": ["-DARM_MATH_MATRIX_CHECK", "-DARM_MATH_ROUNDING"]
      }

    建议先尝试清理构建缓存(删除项目下的build目录),重新配置包含路径后执行完整重建。如果问题依旧,可检查CMSIS版本与编译器兼容性,必要时尝试单独编译DSP库生成.a文件再链接。

    qiusheng121

    检查是否同时添加了.c源文件和预编译的.lib库文件,建议只保留一种形式

    只需要保留 arm_cortexMxxxx.lib 一个文件就行了,不要添加重复的文件,

      admin
      我不清楚仅保留.lib文件后还具不具备定义跳转等功能,所以不是很想用.lib文件。
      然后可能是我原先的DSP文件有问题,我又去gitHub那里去下了CMSIS_DSP的官方文件,最后稍作处理,仅使用Include和Source文件后也可以正常使用,而且具有定义跳转和函数提示等功能。
      感谢您的回答。(😊)。

      Write a Reply...