summaryrefslogtreecommitdiff
path: root/drivers/builtin_openssl2
diff options
context:
space:
mode:
authorZuBsPaCe <kurt.rudin@gmx.net>2015-10-29 14:31:48 +0100
committerZuBsPaCe <kurt.rudin@gmx.net>2015-10-30 03:03:05 +0100
commitb051914032aeb8112d22159d4009304f96a76ad8 (patch)
treee7ae6cac0d08bcd40170302aca22e9d19ed7ce3f /drivers/builtin_openssl2
parent3886ed08acce4f4c66ea6fd834f086b18994e9d1 (diff)
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
Diffstat (limited to 'drivers/builtin_openssl2')
-rw-r--r--drivers/builtin_openssl2/e_os.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/builtin_openssl2/e_os.h b/drivers/builtin_openssl2/e_os.h
index e801b4106a..7323a7b4bf 100644
--- a/drivers/builtin_openssl2/e_os.h
+++ b/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