http://bugs.winehq.org/show_bug.cgi?id=22044
Summary: Builtin msvcr80 not sufficient for running WoW and SCII Beta, missing about 19 functions Product: Wine Version: 1.1.40 Platform: x86 OS/Version: Linux Status: NEW Keywords: download Severity: enhancement Priority: P2 Component: msvcrt AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com
Now that we have a spiffy new msvcr80, I tested it on two real apps: World of Warcraft and Starcraft II Beta, by removing their bundled copies of msvcr80 (or equivalently by marking msvcr80 as builtin only). This failed with
wine: ... unimplemented function msvcr80.dll._initterm_e, aborting (imported by Battle.net.dll).
_initterm_e is supposedly a version of _initterm that returns 0 on success, and adding a version that simply calls _initterm and returns 0 gets us on to the next problem.
wine: ... unimplemented function msvcr80.dll._encode_pointer, aborting (imported by Battle.net.dll).
This is probably just a cdecl version of EncodePointer; implementing _encode_pointer and _decode_pointer as simple cdecl wrappers gets us to the next problem,
wine: ... unimplemented function msvcr80.dll._controlfp_s, aborting (imported by d3dx9_41.dll)
That function's actually documented in msdn, and is probably easy to fake-implement as a wrapper around control87, but needs tests. That's where I stopped adding wrappers, and started using winedump to see if I could get a more complete list of missing functions. winedump -j import Battle.net.dll plus a little text munging shows that file imports the following additional functions listed as stubs in msvcr80.spec:
?_open@@YAHPBDHH@Z ?_type_info_dtor_internal_method@type_info@@QAEXXZ @_malloc_crt@4 __clean_type_info_names_internal __sys_nerr _create_locale _crt_debugger_hook _encoded_null _except_handler4_common _free_locale _iswalpha_l _malloc_crt _strtoi64 _strtoui64 strnlen