diff --git a/stl/CMakeLists.txt b/stl/CMakeLists.txt
index 3cd7e18dc6..ca28a3de6d 100644
--- a/stl/CMakeLists.txt
+++ b/stl/CMakeLists.txt
@@ -576,7 +576,7 @@ function(add_stl_dlls D_SUFFIX REL_OR_DBG)
target_stl_compile_options(msvcp${D_SUFFIX}_eha_objects ${REL_OR_DBG})
add_library(msvcp${D_SUFFIX} SHARED)
- target_link_libraries(msvcp${D_SUFFIX} PRIVATE msvcp${D_SUFFIX}_eha_objects msvcp${D_SUFFIX}_objects msvcp${D_SUFFIX}_init_objects "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib" "ole32.lib")
+ target_link_libraries(msvcp${D_SUFFIX} PRIVATE msvcp${D_SUFFIX}_eha_objects msvcp${D_SUFFIX}_objects msvcp${D_SUFFIX}_init_objects "${TOOLSET_LIB}/vcruntime${D_SUFFIX}.lib" "${TOOLSET_LIB}/msvcrt${D_SUFFIX}.lib" "ucrt${D_SUFFIX}.lib")
set_target_properties(msvcp${D_SUFFIX} PROPERTIES ARCHIVE_OUTPUT_NAME "msvcp140_base${D_SUFFIX}${VCLIBS_SUFFIX}")
set_target_properties(msvcp${D_SUFFIX} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
set_target_properties(msvcp${D_SUFFIX} PROPERTIES OUTPUT_NAME "msvcp140${D_SUFFIX}${VCLIBS_SUFFIX}")
diff --git a/stl/msbuild/stl_base/msvcp.settings.targets b/stl/msbuild/stl_base/msvcp.settings.targets
index c3b50a526f..f136b69304 100644
--- a/stl/msbuild/stl_base/msvcp.settings.targets
+++ b/stl/msbuild/stl_base/msvcp.settings.targets
@@ -51,8 +51,6 @@ SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-opt:ref,noicf $(LinkAdditionalOptions)
-nodefaultlib:libcpmt$(BuildSuffix).lib $(LinkAdditionalOptions)
-nodefaultlib:$(LibOutputFile) $(LinkAdditionalOptions)
- true
- ole32.lib $(LinkAdditionalOptions)
true
true
diff --git a/stl/src/ppltasks.cpp b/stl/src/ppltasks.cpp
index 4c89de1fb4..721a2ea294 100644
--- a/stl/src/ppltasks.cpp
+++ b/stl/src/ppltasks.cpp
@@ -7,6 +7,7 @@
#include
+#if defined(_CRT_APP) || defined(UNDOCKED_WINDOWS_UCRT)
#ifndef UNDOCKED_WINDOWS_UCRT
#pragma warning(push)
#pragma warning(disable : 4265) // non-virtual destructor in base class
@@ -18,8 +19,7 @@
#include
#include
#include
-
-#pragma comment(lib, "ole32")
+#endif
// This IID is exported by ole32.dll; we cannot depend on ole32.dll on OneCore.
static GUID const Local_IID_ICallbackWithNoReentrancyToApplicationSTA = {
@@ -219,6 +219,7 @@ namespace Concurrency {
_CRTIMP2 void __thiscall _TaskEventLogger::_LogWorkItemCompleted() {}
#endif
+#if defined(_CRT_APP) || defined(UNDOCKED_WINDOWS_UCRT)
using namespace ABI::Windows::Foundation;
using namespace ABI::Windows::Foundation::Diagnostics;
using namespace Microsoft::WRL;
@@ -316,6 +317,26 @@ namespace Concurrency {
}
return false;
}
+
+#else
+ _CRTIMP2 void __thiscall _ContextCallback::_CallInContext(_CallbackFunction _Func, bool) const {
+ _Func();
+ }
+
+ _CRTIMP2 void __thiscall _ContextCallback::_Capture() {}
+
+ _CRTIMP2 void __thiscall _ContextCallback::_Reset() {}
+
+ _CRTIMP2 void __thiscall _ContextCallback::_Assign(void*) {}
+
+ _CRTIMP2 bool __cdecl _ContextCallback::_IsCurrentOriginSTA() {
+ return false;
+ }
+
+ _CRTIMP2 bool __cdecl _Task_impl_base::_IsNonBlockingThread() {
+ return false;
+ }
+#endif
} // namespace details
#ifdef _CRT_APP