      defines = [ "USING_V8_SHARED" ]
    }
    include_dirs = [
-@@ -2444,7 +2460,7 @@ v8_component("v8_libbase") {
- 
-   defines = []
- 
--  if (is_component_build) {
-+  if (is_component_build || is_electron_build) {
-     defines = [ "BUILDING_V8_BASE_SHARED" ]
-   }
- 
-@@ -2537,7 +2553,7 @@ v8_component("v8_libplatform") {
- 
-   configs = [ ":internal_config_base" ]
- 
--  if (is_component_build) {
-+  if (is_component_build || is_electron_build) {
-     defines = [ "BUILDING_V8_PLATFORM_SHARED" ]
-   }
- 
-@@ -2601,6 +2617,8 @@ if (current_toolchain == v8_snapshot_toolchain) {
+@@ -2581,6 +2609,8 @@ if (current_toolchain == v8_snapshot_toolchain) {
  
      configs = [ ":internal_config" ]
  

     deps = [
       ":v8_base",
       ":v8_builtins_setup",
@@ -2680,7 +2700,7 @@ group("v8_fuzzers") {
   ]
 }
 

diff --git a/BUILD.gn b/BUILD.gn
index 494ba22f29..6071422d7d 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -157,7 +157,7 @@ config("internal_config") {
 
   include_dirs = [ "." ]
 
-  if (is_component_build) {
+  if (is_component_build || is_electron_build) {
     defines = [ "BUILDING_V8_SHARED" ]
   }
 }
@@ -174,6 +174,20 @@ config("libplatform_config") {
   if (is_component_build) {
     defines = [ "USING_V8_PLATFORM_SHARED" ]
   }
+
+  # For Electron "static_library" all V8 symbols are together in one DLL.
+  # V8 targets which depend on libplatform need to be built with
+  # BUILDING_V8_PLATFORM_SHARED in order to declare its symbols as exported.
+  #
+  # Caveat:
+  # This setting applies to _all_ dependent targets, even those outside
+  # of V8! Currently there are no other targets dependent on v8_libplatform
+  # which Electron would consume, so we don't need to do more complicated tweaks
+  # but be aware of this and check that it's still the case when upgrading
+  # to newer Chromium version.
+  if (is_electron_build && !is_component_build) {
+    defines = [ "BUILDING_V8_PLATFORM_SHARED" ]
+  }
 }
 
 # This config should be applied to code using the libbase.
@@ -185,6 +199,20 @@ config("libbase_config") {
   if (is_android && current_toolchain != host_toolchain) {
     libs += [ "log" ]
   }
+
+  # For Electron "static_library" all V8 symbols are together in one DLL.
+  # V8 targets which depend on libbase need to be built with
+  # BUILDING_V8_BASE_SHARED in order to declare its symbols as exported.
+  #
+  # Caveat:
+  # This setting applies to _all_ dependent targets, even those outside
+  # of V8! Currently there are no other targets dependent on v8_libbase
+  # which Electron would consume, so we don't need to do more complicated tweaks
+  # but be aware of this and check that it's still the case when upgrading
+  # to newer Chromium version.
+  if (is_electron_build && !is_component_build) {
+    defines = [ "BUILDING_V8_BASE_SHARED" ]
+  }
 }
 
 # This config should be applied to code using the libsampler.
@@ -195,7 +223,7 @@ config("libsampler_config") {
 # This config should only be applied to code using V8 and not any V8 code
 # itself.
 config("external_config") {
