diff --git a/build/bakefiles/config.bkl b/build/bakefiles/config.bkl
index b08c08dada..1e5459260c 100644
--- a/build/bakefiles/config.bkl
+++ b/build/bakefiles/config.bkl
@@ -411,6 +411,7 @@ compiled .lib files and setup.h under the lib/ toplevel directory.
+
@@ -492,6 +493,11 @@ it if SHARED=1 unless you know what you are doing.
-lopengl32 -lglu32
+
+ imm32.lib
+ imm32.lib
+ -limm32
+
0
diff --git a/build/bakefiles/multilib.bkl b/build/bakefiles/multilib.bkl
index b9ec796c82..3367df44bc 100644
--- a/build/bakefiles/multilib.bkl
+++ b/build/bakefiles/multilib.bkl
@@ -402,6 +402,7 @@
$(STC_SRC)
coredll
basedll
+ $(EXTRALIBS_STC)
$(STC_HDR)
diff --git a/build/cmake/lib/stc/CMakeLists.txt b/build/cmake/lib/stc/CMakeLists.txt
index f96687d2d8..1640e910c1 100644
--- a/build/cmake/lib/stc/CMakeLists.txt
+++ b/build/cmake/lib/stc/CMakeLists.txt
@@ -195,5 +195,8 @@ wx_lib_compile_definitions(stc PRIVATE
LINK_LEXERS
)
wx_lib_link_libraries(stc PRIVATE wxscintilla)
+if(WXMSW)
+ wx_lib_link_libraries(stc PRIVATE imm32)
+endif()
wx_finalize_lib(stc)
diff --git a/src/stc/ScintillaWX.cpp b/src/stc/ScintillaWX.cpp
index 9ac400fdba..54f9e4afce 100644
--- a/src/stc/ScintillaWX.cpp
+++ b/src/stc/ScintillaWX.cpp
@@ -1438,6 +1438,10 @@ sptr_t ScintillaWX::DirectFunction(
#ifdef __WXMSW__
+#ifdef __VISUALC__
+#pragma comment(lib, "imm32.lib")
+#endif
+
namespace {
POINT POINTFromPoint(Point pt) wxNOEXCEPT {