2
0
Эх сурвалжийг харах

Fixes Visual Studio 2015 linker error (___iob_func)

The original, uncommited fix simply changed compiler flag /MT to /MD. This
would link the C runtime dynamically instead of statically. This is bad,
because some users would have to install the c runtime before starting the
editor.

You can find alot of info about this error, which can happen after
upgrading to VS 2015, and there are workarounds. But I realized, that the
only place, where iob_func is used, is in e_os.h of the openssl library.
The latest version already contains a workaround. I simply updated the
part in e_os.h.

Reference: https://github.com/openssl/openssl/blob/master/e_os.h#L268
Reference: https://software.intel.com/en-us/forums/intel-parallel-studio-beta-archived/topic/266345
Reference: https://connect.microsoft.com/VisualStudio/feedback/details/1144980/error-lnk2001-unresolved-external-symbol-imp-iob-func
Reference: http://stackoverflow.com/questions/757418/should-i-compile-with-md-or-mt

Here's the original error message:

   Creating library bin\godot.windows.tools.lib and object bin\godot.windows.tools.exp
drivers1.windows.tools.lib(t1_enc.windows.tools.obj) : error LNK2001: unresolved external symbol ___iob_func
drivers1.windows.tools.lib(txt_db.windows.tools.obj) : error LNK2001: unresolved external symbol ___iob_func
drivers1.windows.tools.lib(d1_enc.windows.tools.obj) : error LNK2001: unresolved external symbol ___iob_func
drivers1.windows.tools.lib(ui_openssl.windows.tools.obj) : error LNK2001: unresolved external symbol ___iob_func
drivers1.windows.tools.lib(cryptlib.windows.tools.obj) : error LNK2001: unresolved external symbol ___iob_func
drivers1.windows.tools.lib(pem_lib.windows.tools.obj) : error LNK2001: unresolved external symbol ___iob_func
drivers1.windows.tools.lib(d1_both.windows.tools.obj) : error LNK2001: unresolved external symbol ___iob_func
drivers1.windows.tools.lib(rsa_sign.windows.tools.obj) : error LNK2001: unresolved external symbol ___iob_func
bin\godot.windows.tools.exe : fatal error LNK1120: 1 unresolved externals
scons: *** [bin\godot.windows.tools.exe] Error 1120
ZuBsPaCe 10 жил өмнө
parent
commit
b051914032

+ 3 - 3
drivers/builtin_openssl2/e_os.h

@@ -318,8 +318,8 @@ static unsigned int _strlen31(const char *str)
 #      undef isupper
 #      undef isxdigit
 #    endif
-#    if defined(_MSC_VER) && !defined(_DLL) && defined(stdin)
-#      if _MSC_VER>=1300
+#    if defined(_MSC_VER) && !defined(_WIN32_WCE) && !defined(_DLL) && defined(stdin)
+#      if _MSC_VER>=1300 && _MSC_VER<1600
 #        undef stdin
 #        undef stdout
 #        undef stderr
@@ -327,7 +327,7 @@ static unsigned int _strlen31(const char *str)
 #        define stdin  (&__iob_func()[0])
 #        define stdout (&__iob_func()[1])
 #        define stderr (&__iob_func()[2])
-#      elif defined(I_CAN_LIVE_WITH_LNK4049)
+#      elif _MSC_VER<1300 && defined(I_CAN_LIVE_WITH_LNK4049)
 #        undef stdin
 #        undef stdout
 #        undef stderr