将 CubeMx 项目导入 VisualGDB 时出现引用错误
Reference errors when importing CubeMx project into VisualGDB
我在将新的 cubeMX 项目导入 VisualGDB 时遇到了一些问题。我收到大量错误信息:
undefined reference to 'vPortFree'
(举例)
采取的步骤:
- 使用“其他工具链”在 CubeMX 中生成项目文件
- 然后在 VS 中,使用嵌入式 Visual GDB 创建项目,主要遵循默认步骤。我完全遵循这个过程。 https://www.youtube.com/watch?v=XY4I0Nq6IGc
项目创建后,我尝试构建它,但出现以下错误:
Severity Description Project File Line
Error undefined reference to `vPortFree' stm32nucleof429zi_freertos_tcpip C:\Repos\stm32nucleof429zi_freertos_tcpip.git\stm32nucleof429zi_freertos_tcpip.git\Middlewares\Third_Party\FreeRTOS\Source\tasks.c 3920
Error undefined reference to `vPortFree' stm32nucleof429zi_freertos_tcpip C:\Repos\stm32nucleof429zi_freertos_tcpip.git\stm32nucleof429zi_freertos_tcpip.git\Middlewares\Third_Party\FreeRTOS\Source\tasks.c 3921
Error undefined reference to `vPortFree' stm32nucleof429zi_freertos_tcpip C:\Repos\stm32nucleof429zi_freertos_tcpip.git\stm32nucleof429zi_freertos_tcpip.git\Middlewares\Third_Party\FreeRTOS\Source\tasks.c 3927
Error Build failed: arm-none-eabi-g++.exe exited with code 1 stm32nucleof429zi_freertos_tcpip 1
Error ld returned 1 exit status stm32nucleof429zi_freertos_tcpip C:\Repos\stm32nucleof429zi_freertos_tcpip.git\stm32nucleof429zi_freertos_tcpip.git\collect2.exe 0
然而,当我右键单击 main.c 并编译时,项目编译没有错误。使用构建工具和调试器时会出现这些错误。
以前导入项目的时候从来没有遇到过这个问题。任何帮助将不胜感激
谢谢
在配置了一段时间后,我发现了问题。 CubeMx 创建的工具链文件没有告诉链接器包含 FreeRTOS 编译所需的所有文件。
此问题仅在您使用 CMSIS_RTOS_V2 且以下步骤为我修复时才相关:
将 CMSIS_RTOS_V2 添加到项目 space,方法是:
添加缺少的包括:
- 转到:项目->VisualGDP 项目属性->MS 构建设置->包含目录并将文件夹 CMSIS_RTOS_V2 添加到文件路径
解决未识别引用“pvPortMalloc”错误:
- 在 VS 中的解决方案资源管理器中 window:单击“显示所有文件”。这是解决方案资源管理器顶部的一个小 icon/tab。导航至:C:\...Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang。右键单击 heap_4.c 并将其包含在项目中
- https://sysprogs.com/w/forums/topic/error-undefined-reference-to-pvportmalloc-and-vportfree/
我在将新的 cubeMX 项目导入 VisualGDB 时遇到了一些问题。我收到大量错误信息:
undefined reference to 'vPortFree'
(举例)
采取的步骤:
- 使用“其他工具链”在 CubeMX 中生成项目文件
- 然后在 VS 中,使用嵌入式 Visual GDB 创建项目,主要遵循默认步骤。我完全遵循这个过程。 https://www.youtube.com/watch?v=XY4I0Nq6IGc
项目创建后,我尝试构建它,但出现以下错误:
Severity Description Project File Line
Error undefined reference to `vPortFree' stm32nucleof429zi_freertos_tcpip C:\Repos\stm32nucleof429zi_freertos_tcpip.git\stm32nucleof429zi_freertos_tcpip.git\Middlewares\Third_Party\FreeRTOS\Source\tasks.c 3920
Error undefined reference to `vPortFree' stm32nucleof429zi_freertos_tcpip C:\Repos\stm32nucleof429zi_freertos_tcpip.git\stm32nucleof429zi_freertos_tcpip.git\Middlewares\Third_Party\FreeRTOS\Source\tasks.c 3921
Error undefined reference to `vPortFree' stm32nucleof429zi_freertos_tcpip C:\Repos\stm32nucleof429zi_freertos_tcpip.git\stm32nucleof429zi_freertos_tcpip.git\Middlewares\Third_Party\FreeRTOS\Source\tasks.c 3927
Error Build failed: arm-none-eabi-g++.exe exited with code 1 stm32nucleof429zi_freertos_tcpip 1
Error ld returned 1 exit status stm32nucleof429zi_freertos_tcpip C:\Repos\stm32nucleof429zi_freertos_tcpip.git\stm32nucleof429zi_freertos_tcpip.git\collect2.exe 0
然而,当我右键单击 main.c 并编译时,项目编译没有错误。使用构建工具和调试器时会出现这些错误。
以前导入项目的时候从来没有遇到过这个问题。任何帮助将不胜感激 谢谢
在配置了一段时间后,我发现了问题。 CubeMx 创建的工具链文件没有告诉链接器包含 FreeRTOS 编译所需的所有文件。
此问题仅在您使用 CMSIS_RTOS_V2 且以下步骤为我修复时才相关:
将 CMSIS_RTOS_V2 添加到项目 space,方法是: 添加缺少的包括:
- 转到:项目->VisualGDP 项目属性->MS 构建设置->包含目录并将文件夹 CMSIS_RTOS_V2 添加到文件路径
解决未识别引用“pvPortMalloc”错误:
- 在 VS 中的解决方案资源管理器中 window:单击“显示所有文件”。这是解决方案资源管理器顶部的一个小 icon/tab。导航至:C:\...Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang。右键单击 heap_4.c 并将其包含在项目中
- https://sysprogs.com/w/forums/topic/error-undefined-reference-to-pvportmalloc-and-vportfree/