Trying to link application with msvcr80.dll instead of msvcrt.dll (e.g. by replacing -lmsvcrt by -lmsvcr80 in gcc spec file) results in following linker error:
.../lib/crt2.o: in function `_tmainCRTStartup': .../mingw-w64-crt/crt/crtexe.c:290: undefined reference to `_set_invalid_parameter_handler' .../lib/libmingwex.a(lib32_libmingwex_a-mingw_vfprintf.o): in function `_mingw_vfprintf': .../mingw-w64-crt/stdio/mingw_vfprintf.c:53: undefined reference to `_lock_file' .../mingw-w64-crt/stdio/mingw_vfprintf.c:55: undefined reference to `_unlock_file' It is because msvcr80.dll does not implement following functions which are required for mingw printf implementations: _set_invalid_parameter_handler, _lock_file, _unlock_file. This patch fixes this problem by compiling missing functions into libmsvcr80.a library which is linked when specifying -lmsvcr80 flag. --- mingw-w64-crt/Makefile.am | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index 86b0b0d7..3f477c5d 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am @@ -368,13 +368,20 @@ src_msvcrtarm64=\ misc/_getpid.c \ stdio/gets.c +src_msvcr80_32=\ + $(src_msvcrt_common) \ + misc/invalid_parameter_handler.c \ + stdio/mingw_lock.c + src_msvcr80_64=\ $(src_msvcrt_common) \ misc/__p___argv.c \ misc/__p__acmdln.c \ misc/__p__commode.c \ misc/__p__fmode.c \ - misc/__p__wcmdln.c + misc/__p__wcmdln.c \ + misc/invalid_parameter_handler.c \ + stdio/mingw_lock.c src_msvcr120_app=\ $(src_msvcrt_common) \ @@ -811,7 +818,7 @@ lib32_libcrtdll_a_AR = $(DTDEF32) $(top_srcdir)/lib32/crtdll.def && $(AR) $(ARFL lib32_libcrtdll_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) $(sysincludes) lib32_LIBRARIES += lib32/libmsvcr80.a -lib32_libmsvcr80_a_SOURCES = $(src_msvcrt_common) lib32/msvcr80.def.in +lib32_libmsvcr80_a_SOURCES = $(src_msvcr80_32) lib32/msvcr80.def.in lib32_libmsvcr80_a_AR = $(DTDEF32) lib32/msvcr80.def && $(AR) $(ARFLAGS) lib32_libmsvcr80_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) $(sysincludes) EXTRA_lib32_libmsvcr80_a_DEPENDENCIES=lib32/msvcr80.def -- 2.20.1 _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public