diff --git a/VulkanMemoryAllocator.cabal b/VulkanMemoryAllocator.cabal
--- a/VulkanMemoryAllocator.cabal
+++ b/VulkanMemoryAllocator.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           VulkanMemoryAllocator
-version:        0.10.3.1
+version:        0.10.4
 synopsis:       Bindings to the VulkanMemoryAllocator library
 category:       Graphics
 homepage:       https://github.com/expipiplus1/vulkan#readme
@@ -89,14 +89,12 @@
       VulkanMemoryAllocator/include
   cxx-sources:
       src/lib.cpp
-  extra-libraries:
-      stdc++
   build-depends:
       base <5
     , bytestring
     , transformers
     , vector
-    , vulkan >=3.6 && <3.23
+    , vulkan >=3.6 && <3.24
   if flag(safe-foreign-calls)
     cpp-options: -DSAFE_FOREIGN_CALLS
   if flag(vma-ndebug)
@@ -107,4 +105,24 @@
     cpp-options: -DGENERIC_INSTANCES
   if impl(ghc >= 8.10)
     ghc-options: -optcxx -std=c++17
+  if impl(ghc >= 9.4)
+    build-depends:
+        system-cxx-std-lib ==1.0
+  else
+    if os(linux)
+      extra-libraries:
+          stdc++
+    if os(darwin) || os(freebsd)
+      extra-libraries:
+          c++
+    if os(openbsd)
+      extra-libraries:
+          c++ c++abi pthread
+    if os(windows)
+      if impl(ghc < 9.3)
+        extra-libraries:
+            stdc++
+      else
+        extra-libraries:
+            c++ c++abi
   default-language: Haskell2010
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,10 @@
 
 ## WIP
 
+## [0.10.4] - 2022-10-02
+- More robust linking against C++ standard library
+- Raise upper bound on `vulkan`
+
 ## [0.10.3.1] - 2022-09-27
 - Enable c++17 to get VMA aligned alloc
 
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: VulkanMemoryAllocator
-version: "0.10.3.1"
+version: "0.10.4"
 synopsis: Bindings to the VulkanMemoryAllocator library
 category: Graphics
 maintainer: Ellie Hermaszewska <live.long.and.prosper@monoid.al>
@@ -14,13 +14,13 @@
   source-dirs: src
   include-dirs:
     VulkanMemoryAllocator/include
-  extra-libraries:
-    stdc++
+
+
   cxx-sources:
     src/lib.cpp
   dependencies:
     - base <5
-    - vulkan >= 3.6 && < 3.23
+    - vulkan >= 3.6 && < 3.24
     - bytestring
     - transformers
     - vector
@@ -39,6 +39,26 @@
         - -optcxx -std=c++17
     - condition: false
       other-modules: Paths_VulkanMemoryAllocator
+    # C++ stdlib linking (mainly cribbed from text)
+    - condition: impl(ghc >= 9.4)
+      then:
+        dependencies: system-cxx-std-lib == 1.0
+      else:
+        when:
+          - condition: os(linux)
+            extra-libraries: stdc++
+          - condition: os(darwin) || os(freebsd)
+            extra-libraries: c++
+          - condition: os(openbsd)
+            extra-libraries: c++ c++abi pthread
+          - condition: os(windows)
+            when:
+              condition: impl(ghc < 9.3)
+              then:
+                extra-libraries: stdc++
+              else:
+                extra-libraries: c++ c++abi
+
   ghc-options:
     - -Wall
     - -Wno-unticked-promoted-constructors
