FreeRTOS / FreeRTOS-Kernel

FreeRTOS kernel files only, submoduled into https://github.com/FreeRTOS/FreeRTOS and various other repos.
https://www.FreeRTOS.org
MIT License
2.71k stars 1.11k forks source link

[BUG] Missing `extern "C"` guard in MSVC portmacro.h #1064

Closed CrustyAuklet closed 4 months ago

CrustyAuklet commented 4 months ago

Describe the bug It appears that in merge request #1047 The C++ block was reduced to not include the transitive header includes. This makes sense but revealed the lack of the extern "C" guard in the MSVC-MingW/portmacro.h header.

Target

Host

To Reproduce compile a project for the MSVC-MingW simulator and there will be undefined references.

Expected behavior Compiles successfully.

Screenshots On MSVC:

seal_backend.lib(signals.cpp.obj) : error LNK2001: unresolved external symbol "void __cdecl vPortEnterCritical(void)" (?vPortEnterCritical@@YAXXZ)
seal_sdk.lib(metrics_store.cpp.obj) : error LNK2001: unresolved external symbol "void __cdecl vPortEnterCritical(void)" (?vPortEnterCritical@@YAXXZ)
seal_sdk.lib(ui_daemon.cpp.obj) : error LNK2001: unresolved external symbol "void __cdecl vPortEnterCritical(void)" (?vPortEnterCritical@@YAXXZ)
seal_sdk.lib(error_handlers.cpp.obj) : error LNK2001: unresolved external symbol "void __cdecl vPortEnterCritical(void)" (?vPortEnterCritical@@YAXXZ)
seal.lib(r3_sync.cpp.obj) : error LNK2001: unresolved external symbol "void __cdecl vPortEnterCritical(void)" (?vPortEnterCritical@@YAXXZ)
  Hint on symbols that are defined and could potentially match:
    vPortEnterCritical
seal_backend.lib(signals.cpp.obj) : error LNK2001: unresolved external symbol "void __cdecl vPortExitCritical(void)" (?vPortExitCritical@@YAXXZ)
seal_sdk.lib(metrics_store.cpp.obj) : error LNK2001: unresolved external symbol "void __cdecl vPortExitCritical(void)" (?vPortExitCritical@@YAXXZ)
seal_sdk.lib(ui_daemon.cpp.obj) : error LNK2001: unresolved external symbol "void __cdecl vPortExitCritical(void)" (?vPortExitCritical@@YAXXZ)
seal_sdk.lib(error_handlers.cpp.obj) : error LNK2001: unresolved external symbol "void __cdecl vPortExitCritical(void)" (?vPortExitCritical@@YAXXZ)
seal.lib(r3_sync.cpp.obj) : error LNK2001: unresolved external symbol "void __cdecl vPortExitCritical(void)" (?vPortExitCritical@@YAXXZ)
  Hint on symbols that are defined and could potentially match:

Additional context I made a simple fix in my fork: link

paulbartell commented 4 months ago

@CrustyAuklet Thanks for the fix. Can you open a pull request?