--- blender-2.78a/build_files/cmake/macros.cmake.orig	2017-01-21 11:17:57.002811700 +0000
+++ blender-2.78a/build_files/cmake/macros.cmake	2017-01-21 13:05:19.516419300 +0000
@@ -743,7 +743,10 @@
 
 	if(WIN32)
 		list(APPEND BLENDER_SORTED_LIBS bf_intern_gpudirect)
-	endif()
+		# bf_intern_gpudirect needs BLI_dynlib_{open,find_symbol}, which are in bf_blenlib
+		# IMHO bf_blenlib should be one of the last linked libs as many others depend on it
+		list(APPEND BLENDER_SORTED_LIBS bf_blenlib)
+	endif()
 
 	if(WITH_OPENSUBDIV OR WITH_CYCLES_OPENSUBDIV)
 		list(APPEND BLENDER_SORTED_LIBS bf_intern_opensubdiv)
--- blender-2.78a/source/blenderplayer/CMakeLists.txt.orig	2017-01-21 13:47:18.292272800 +0000
+++ blender-2.78a/source/blenderplayer/CMakeLists.txt	2017-01-21 14:12:20.118287000 +0000
@@ -223,6 +223,9 @@
 
 	if(WIN32)
 		list(APPEND BLENDER_SORTED_LIBS bf_intern_gpudirect)
+		# bf_intern_gpudirect needs BLI_dynlib_{open,find_symbol}, which are in bf_blenlib
+		# IMHO bf_blenlib should be one of the last linked libs as many others depend on it
+		list(APPEND BLENDER_SORTED_LIBS bf_blenlib)
 	endif()
 
 	if(WITH_OPENSUBDIV)
