[MSVCRT] Export __acrt_iob_func to fix GCC build with latest RosBE 2.2 (#1835)

This adds an evil hack to persuade libstdc++, which tries to import __acrt_iob_func from a DLL.
This can only be solved cleanly by adding a GCC-compatible C++ standard library to our tree later.
This commit is contained in:
Victor Perevertkin 2019-10-20 13:44:17 +03:00 committed by Colin Finck
parent d9e7c48c1a
commit fdd1d7d60c
2 changed files with 26 additions and 1 deletions

View file

@ -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

View file

@ -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 <victor.perevertkin@reactos.org>
*/
// 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 <precomp.h>
/*********************************************************************
* __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