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
Development board: [e.g. HiFive11 RevB]
Instruction Set Architecture: x86
IDE and version: CMake - CLI
Toolchain and version: MSVC17, clang-cl 18
Host
Host OS: Windows
Version: 11
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
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 theMSVC-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:
Additional context I made a simple fix in my fork: link