diff --git a/sdk/lib/crt/msvcrtex.cmake b/sdk/lib/crt/msvcrtex.cmake index c46751007ada5..5be20560a53cb 100644 --- a/sdk/lib/crt/msvcrtex.cmake +++ b/sdk/lib/crt/msvcrtex.cmake @@ -39,7 +39,8 @@ list(APPEND MSVCRTEX_SOURCE misc/fltused.c misc/isblank.c misc/iswblank.c - misc/ofmt_stub.c) + misc/ofmt_stub.c + stdio/acrt_iob_func.c) if(MSVC) list(APPEND MSVCRTEX_SOURCE diff --git a/sdk/lib/crt/stdio/acrt_iob_func.c b/sdk/lib/crt/stdio/acrt_iob_func.c new file mode 100644 index 0000000000000..223ea36b5fa34 --- /dev/null +++ b/sdk/lib/crt/stdio/acrt_iob_func.c @@ -0,0 +1,24 @@ +/* + * PROJECT: ReactOS CRT library + * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) + * PURPOSE: __acrt_iob_func implementation + * COPYRIGHT: Victor Perevertkin + */ + +// Evil hack necessary, because we're linking to the RosBE-provided libstdc++ when using GCC. +// This can only be solved cleanly by adding a GCC-compatible C++ standard library to our tree. +#ifdef __GNUC__ + +#include + +/********************************************************************* + * __acrt_iob_func(MSVCRT.@) + */ +FILE * CDECL __acrt_iob_func(int index) +{ + return &__iob_func()[index]; +} + +const void* _imp____acrt_iob_func = __acrt_iob_func; + +#endif