Thomas,
Chimpmunk2D is written in C and I compiled it on Windows using three different compilers, each in an attempt to resolve the problem. I used mingw64 gcc with Linux cross compile, Windows Cygwin, and Windows Msys2. All fail for various reasons.
Regarding your missing __imp___acrt_iob_func, you can resolve individual missing dependencies by providing them yourself using the 'alias' feature of Free Pascal. This should at least resolve the dependency:
function acrt_iob_func: Pointer; cdecl; [ public, alias:
'__imp___acrt_iob_func'];
begin
Result := nil;
end;
According to this stack overflow, the actual implementation should return a pointer to an array of three HFILE items somewhat like FILE _iob[] = {*stdin, *stdout, *stderr}; You can see if it can compile / link by using my implementation above. In the situations where I was able to widdle down the dependencis to to one or tow, this trick worked, but unfortunately after that I would get an internal linker error. Even in cases where I resolved all dependencies without the trick I still eventually end up with an internal linker error.
https://stackoverflow.com/questions/30412951/unresolved-external-symbol-imp-fprintf-and-imp-iob-func-sdl2
Finally, I also wrote a utility to search for missing dependencies on Windows.
https://cache.getlazarus.org/images/desktop/raylib-static.png
Henery Vermaak offered a similar solution for use at the command line.
(begin quote)
Note for anyone with msys2, you can make a file containing all defined external symbols like this (using atexit as an example):
find /mingw64/lib -name "*.a" -exec nm -pogC --defined-only '{}' \; 2> /dev/null > symbs.txt
Then search it with grep:
grep -w atexit symbs.txt
Resulting in:
C:/msys64/mingw64/lib/libmsvcr120.a:libmsvcr120_defs01591.o:0000000000000000 T atexit
C:/msys64/mingw64/lib/libmsvcr120_app.a:libmsvcr120_app_defs01268.o:0000000000000000T atexit
C:/msys64/mingw64/lib/libmsvcr120d.a:libmsvcr120d_defs01654.o:0000000000000000 T atexit
(end quote)