diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9a518af..370ba96 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2039,48 +2039,47 @@
         add_subdirectory(third_party/SPIRV-Tools)
     endif()
 
-    add_library(libvk_swiftshader SHARED ${VULKAN_LIST})
-    set_target_properties(libvk_swiftshader PROPERTIES
+    add_library(vk_swiftshader SHARED ${VULKAN_LIST})
+
+    set_target_properties(vk_swiftshader PROPERTIES
         INCLUDE_DIRECTORIES "${VULKAN_INCLUDE_DIR}"
         FOLDER "Vulkan"
         COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS}"
         COMPILE_DEFINITIONS "VK_EXPORT=;NO_SANITIZE_FUNCTION=;$<$<CONFIG:Debug>:DEBUGGER_WAIT_DIALOG>"
-        PREFIX ""
     )
 
     if(WIN32)
-        set_property(TARGET libvk_swiftshader APPEND
+        set_property(TARGET vk_swiftshader APPEND
                      PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_WIN32_KHR")
     elseif(LINUX)
         if(X11)
-            set_property(TARGET libvk_swiftshader APPEND
+            set_property(TARGET vk_swiftshader APPEND
                         PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_XLIB_KHR")
         endif(X11)
         if(XCB)
-            set_property(TARGET libvk_swiftshader APPEND
+            set_property(TARGET vk_swiftshader APPEND
                         PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_XCB_KHR")
         endif(XCB)
     elseif(APPLE)
-        set_property(TARGET libvk_swiftshader APPEND
+        set_property(TARGET vk_swiftshader APPEND
                      PROPERTY COMPILE_DEFINITIONS "VK_USE_PLATFORM_MACOS_MVK")
     endif()
 
-    set_shared_library_export_map(libvk_swiftshader ${SOURCE_DIR}/Vulkan)
-    target_link_libraries(libvk_swiftshader ${Reactor} Yarn ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
+    set_shared_library_export_map(vk_swiftshader ${SOURCE_DIR}/Vulkan)
+    target_link_libraries(vk_swiftshader ${Reactor} Yarn ${OS_LIBS} SPIRV-Tools SPIRV-Tools-opt)
     add_custom_command(
-        TARGET libvk_swiftshader
+        TARGET vk_swiftshader
         POST_BUILD
-        COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:libvk_swiftshader>/translator
-        COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> $<TARGET_FILE_DIR:libvk_swiftshader>/translator/${LIB_PREFIX}Vulkan_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
+        COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:vk_swiftshader>/translator
+        COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:vk_swiftshader> $<TARGET_FILE_DIR:vk_swiftshader>/translator/${LIB_PREFIX}Vulkan_translator${CMAKE_SHARED_LIBRARY_SUFFIX}
         COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
-        COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libvk_swiftshader> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
+        COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:vk_swiftshader> ${CMAKE_BINARY_DIR}/${CMAKE_SYSTEM_NAME}/
     )
 
     # The vk_swiftshader_icd.json manifest file will point to ICD_LIBRARY_PATH.
     # Set ICD_LIBRARY_PATH to be a relative path similar to "./libvk_swiftshader.so", so both files can be moved.
     # A relative path is relative to the manifest file.
-    # Note that the library name is always "libvk_swiftshader"; we do not use the platform-specific prefix.
-    set(ICD_LIBRARY_PATH "libvk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}")
+    set(ICD_LIBRARY_PATH "${CMAKE_SHARED_LIBRARY_PREFIX}vk_swiftshader${CMAKE_SHARED_LIBRARY_SUFFIX}")
     if(WIN32)
         # The path is output to a JSON file, which requires backslashes to be escaped.
         set(ICD_LIBRARY_PATH ".\\\\${ICD_LIBRARY_PATH}")
@@ -2255,6 +2254,8 @@
     )
 
     add_executable(vk-unittests ${VK_UNITTESTS_LIST})
+    add_dependencies(vk-unittests vk_swiftshader)
+
     set_target_properties(vk-unittests PROPERTIES
         INCLUDE_DIRECTORIES "${VK_UNITTESTS_INCLUDE_DIR}"
         FOLDER "Tests"
diff --git a/src/Vulkan/libvk_swiftshader.def b/src/Vulkan/vk_swiftshader.def
similarity index 100%
rename from src/Vulkan/libvk_swiftshader.def
rename to src/Vulkan/vk_swiftshader.def
diff --git a/src/Vulkan/libvk_swiftshader.exports b/src/Vulkan/vk_swiftshader.exports
similarity index 100%
rename from src/Vulkan/libvk_swiftshader.exports
rename to src/Vulkan/vk_swiftshader.exports
diff --git a/src/Vulkan/libvk_swiftshader.lds b/src/Vulkan/vk_swiftshader.lds
similarity index 100%
rename from src/Vulkan/libvk_swiftshader.lds
rename to src/Vulkan/vk_swiftshader.lds
diff --git a/tests/VulkanUnitTests/Driver.cpp b/tests/VulkanUnitTests/Driver.cpp
index e216d74..047e394 100644
--- a/tests/VulkanUnitTests/Driver.cpp
+++ b/tests/VulkanUnitTests/Driver.cpp
@@ -61,19 +61,24 @@
 	#elif defined(NDEBUG)
 		#if defined(_WIN64)
 			return load("./build/Release_x64/vk_swiftshader.dll") ||
+			       load("./build/Release/vk_swiftshader.dll") ||
+			       load("./vk_swiftshader.dll");
 		#else
 			return load("./build/Release_Win32/vk_swiftshader.dll") ||
+			       load("./build/Release/vk_swiftshader.dll") ||
+			       load("./vk_swiftshader.dll");
 		#endif
-			       load("./build/Release/libvk_swiftshader.dll") ||
 	#else
 		#if defined(_WIN64)
 			return load("./build/Debug_x64/vk_swiftshader.dll") ||
+			       load("./build/Debug/vk_swiftshader.dll") ||
+			       load("./vk_swiftshader.dll");
 		#else
 			return load("./build/Debug_Win32/vk_swiftshader.dll") ||
+			       load("./build/Debug/vk_swiftshader.dll") ||
+			       load("./vk_swiftshader.dll");
 		#endif
-			       load("./build/Debug/libvk_swiftshader.dll") ||
 	#endif
-			       load("./libvk_swiftshader.dll");
 #elif OS_MAC
 	return load("./build/Darwin/libvk_swiftshader.dylib") ||
 	       load("swiftshader/libvk_swiftshader.dylib") ||
@@ -81,7 +86,7 @@
 #elif OS_LINUX
 	return load("./build/Linux/libvk_swiftshader.so") ||
 	       load("swiftshader/libvk_swiftshader.so") ||
-	       load("libvk_swiftshader.so");
+	       load("./libvk_swiftshader.so");
 #elif OS_ANDROID || OS_FUCHSIA
 	return load("libvk_swiftshader.so");
 #else
