Repository files navigation

QuantLib-DLL

Pre-built QuantLib as a Windows x64 DLL.

Upstream QuantLib blocks DLL builds on MSVC. This project patches the source to enable shared library builds and publishes pre-built binaries as GitHub Release assets.

Download

Go to Releases and download the zip for your QuantLib version.

Extract to a directory of your choice (e.g. C:\quantlib-deps):

Expand-Archive QuantLib-1.41-x64-dll.zip -DestinationPath C:\quantlib-deps

This gives you:

C:\quantlib-deps\
QuantLib-1.41\
bin\QuantLib-x64-mt.dll # Runtime DLL
lib\QuantLib-x64-mt.lib # Import library for linking
include\ql\... # QuantLib headers (patched for DLL)
boost_1_87_0\
boost\... # Boost headers

Build locally

Requirements: Visual Studio 2022 (C++ workload), CMake, 7-Zip.

.\scripts\Build-QuantLibDLL.ps1-PackageZip

By default the working directory is build/ and the install directory is install/ inside the repo, so you can inspect the patched QuantLib sources at build\QuantLib-<version>\ after the build.

With custom versions and install location:

.\scripts\Build-QuantLibDLL.ps1`-QuantLibVersion 1.41`-BoostVersion 1.87.0`-InstallDir C:\Users\me\quantlib-deps\QuantLib-1.41`-PackageZip

Include the QuantLib test suite:

.\scripts\Build-QuantLibDLL.ps1-BuildTests -PackageZip

Build and run the test suite:

.\scripts\Build-QuantLibDLL.ps1-RunTests -PackageZip

Patches applied

Eight patches are applied to the QuantLib source to enable DLL builds:

FilePatch
cmake/Platform.cmakeRemove FATAL_ERROR that blocks DLL builds on MSVC and suppress C4251 warnings
ql/CMakeLists.txtAdd RUNTIME DESTINATION so cmake --install copies the DLL
ql/qldefines.hpp.cfgInject QL_EXPORT / QL_IMPORT_ONLY macros for dllexport/dllimport
ql/math/distributions/normaldistribution.hppAdd QL_EXPORT to InverseCumulativeNormal and MoroInverseCumulativeNormal
ql/cashflows/lineartsrpricer.hppAdd QL_EXPORT to defaultLowerBound and defaultUpperBound static const members
ql/experimental/math/gaussiancopulapolicy.hppAdd QL_EXPORT to density_ and cumulative_ static const members
ql/math/randomnumbers/primitivepolynomials.hppAdd QL_EXPORT to PrimitivePolynomials extern array
Singleton DLL fixCreate ql/patterns/singleton.cpp with explicit template instantiations and add extern template declarations to each singleton header so only one copy of each singleton exists across DLL/EXE boundaries

Patches 3–7 are needed because CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not export private static const class data members or extern "C" arrays. Without these patches, consumers get unresolved symbol errors at link time.

The singleton fix (patch 8) solves a separate problem: without it, both the DLL and any consuming EXE independently instantiate Singleton<T>::instance(), producing two separate singleton objects. This causes widespread test failures because, for example, Settings::instance().evaluationDate() set in the EXE has no effect on the DLL's own copy.

Build details

  • Visual Studio 2022 (MSVC)
  • CMake with BUILD_SHARED_LIBS=ON and CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
  • MSVC DLL CRT runtime (/MD)
  • Boost headers only (no compiled Boost libraries needed)

License

This repository (build scripts and CI configuration) is licensed under the BSD 3-Clause License. QuantLib itself is licensed under the QuantLib License (BSD-modified).

About

Pre-built QuantLib DLL for Windows (x64, MSVC)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

QuantLib-DLL

Pre-built QuantLib as a Windows x64 DLL.

Upstream QuantLib blocks DLL builds on MSVC. This project patches the source to enable shared library builds and publishes pre-built binaries as GitHub Release assets.

Download

Go to Releases and download the zip for your QuantLib version.

Extract to a directory of your choice (e.g. C:\quantlib-deps):

Expand-Archive QuantLib-1.41-x64-dll.zip -DestinationPath C:\quantlib-deps

This gives you:

C:\quantlib-deps\
QuantLib-1.41\
bin\QuantLib-x64-mt.dll # Runtime DLL
lib\QuantLib-x64-mt.lib # Import library for linking
include\ql\... # QuantLib headers (patched for DLL)
boost_1_87_0\
boost\... # Boost headers

Build locally

Requirements: Visual Studio 2022 (C++ workload), CMake, 7-Zip.

.\scripts\Build-QuantLibDLL.ps1-PackageZip

By default the working directory is build/ and the install directory is install/ inside the repo, so you can inspect the patched QuantLib sources at build\QuantLib-<version>\ after the build.

With custom versions and install location:

.\scripts\Build-QuantLibDLL.ps1`-QuantLibVersion 1.41`-BoostVersion 1.87.0`-InstallDir C:\Users\me\quantlib-deps\QuantLib-1.41`-PackageZip

Include the QuantLib test suite:

.\scripts\Build-QuantLibDLL.ps1-BuildTests -PackageZip

Build and run the test suite:

.\scripts\Build-QuantLibDLL.ps1-RunTests -PackageZip

Patches applied

Eight patches are applied to the QuantLib source to enable DLL builds:

FilePatch
cmake/Platform.cmakeRemove FATAL_ERROR that blocks DLL builds on MSVC and suppress C4251 warnings
ql/CMakeLists.txtAdd RUNTIME DESTINATION so cmake --install copies the DLL
ql/qldefines.hpp.cfgInject QL_EXPORT / QL_IMPORT_ONLY macros for dllexport/dllimport
ql/math/distributions/normaldistribution.hppAdd QL_EXPORT to InverseCumulativeNormal and MoroInverseCumulativeNormal
ql/cashflows/lineartsrpricer.hppAdd QL_EXPORT to defaultLowerBound and defaultUpperBound static const members
ql/experimental/math/gaussiancopulapolicy.hppAdd QL_EXPORT to density_ and cumulative_ static const members
ql/math/randomnumbers/primitivepolynomials.hppAdd QL_EXPORT to PrimitivePolynomials extern array
Singleton DLL fixCreate ql/patterns/singleton.cpp with explicit template instantiations and add extern template declarations to each singleton header so only one copy of each singleton exists across DLL/EXE boundaries

Patches 3–7 are needed because CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not export private static const class data members or extern "C" arrays. Without these patches, consumers get unresolved symbol errors at link time.

The singleton fix (patch 8) solves a separate problem: without it, both the DLL and any consuming EXE independently instantiate Singleton<T>::instance(), producing two separate singleton objects. This causes widespread test failures because, for example, Settings::instance().evaluationDate() set in the EXE has no effect on the DLL's own copy.

Build details

  • Visual Studio 2022 (MSVC)
  • CMake with BUILD_SHARED_LIBS=ON and CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
  • MSVC DLL CRT runtime (/MD)
  • Boost headers only (no compiled Boost libraries needed)

License

This repository (build scripts and CI configuration) is licensed under the BSD 3-Clause License. QuantLib itself is licensed under the QuantLib License (BSD-modified).

About

Pre-built QuantLib DLL for Windows (x64, MSVC)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

QuantLib-DLL

Pre-built QuantLib as a Windows x64 DLL.

Upstream QuantLib blocks DLL builds on MSVC. This project patches the source to enable shared library builds and publishes pre-built binaries as GitHub Release assets.

Download

Go to Releases and download the zip for your QuantLib version.

Extract to a directory of your choice (e.g. C:\quantlib-deps):

Expand-Archive QuantLib-1.41-x64-dll.zip -DestinationPath C:\quantlib-deps

This gives you:

C:\quantlib-deps\
QuantLib-1.41\
bin\QuantLib-x64-mt.dll # Runtime DLL
lib\QuantLib-x64-mt.lib # Import library for linking
include\ql\... # QuantLib headers (patched for DLL)
boost_1_87_0\
boost\... # Boost headers

Build locally

Requirements: Visual Studio 2022 (C++ workload), CMake, 7-Zip.

.\scripts\Build-QuantLibDLL.ps1-PackageZip

By default the working directory is build/ and the install directory is install/ inside the repo, so you can inspect the patched QuantLib sources at build\QuantLib-<version>\ after the build.

With custom versions and install location:

.\scripts\Build-QuantLibDLL.ps1`-QuantLibVersion 1.41`-BoostVersion 1.87.0`-InstallDir C:\Users\me\quantlib-deps\QuantLib-1.41`-PackageZip

Include the QuantLib test suite:

.\scripts\Build-QuantLibDLL.ps1-BuildTests -PackageZip

Build and run the test suite:

.\scripts\Build-QuantLibDLL.ps1-RunTests -PackageZip

Patches applied

Eight patches are applied to the QuantLib source to enable DLL builds:

FilePatch
cmake/Platform.cmakeRemove FATAL_ERROR that blocks DLL builds on MSVC and suppress C4251 warnings
ql/CMakeLists.txtAdd RUNTIME DESTINATION so cmake --install copies the DLL
ql/qldefines.hpp.cfgInject QL_EXPORT / QL_IMPORT_ONLY macros for dllexport/dllimport
ql/math/distributions/normaldistribution.hppAdd QL_EXPORT to InverseCumulativeNormal and MoroInverseCumulativeNormal
ql/cashflows/lineartsrpricer.hppAdd QL_EXPORT to defaultLowerBound and defaultUpperBound static const members
ql/experimental/math/gaussiancopulapolicy.hppAdd QL_EXPORT to density_ and cumulative_ static const members
ql/math/randomnumbers/primitivepolynomials.hppAdd QL_EXPORT to PrimitivePolynomials extern array
Singleton DLL fixCreate ql/patterns/singleton.cpp with explicit template instantiations and add extern template declarations to each singleton header so only one copy of each singleton exists across DLL/EXE boundaries

Patches 3–7 are needed because CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not export private static const class data members or extern "C" arrays. Without these patches, consumers get unresolved symbol errors at link time.

The singleton fix (patch 8) solves a separate problem: without it, both the DLL and any consuming EXE independently instantiate Singleton<T>::instance(), producing two separate singleton objects. This causes widespread test failures because, for example, Settings::instance().evaluationDate() set in the EXE has no effect on the DLL's own copy.

Build details

  • Visual Studio 2022 (MSVC)
  • CMake with BUILD_SHARED_LIBS=ON and CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
  • MSVC DLL CRT runtime (/MD)
  • Boost headers only (no compiled Boost libraries needed)

License

This repository (build scripts and CI configuration) is licensed under the BSD 3-Clause License. QuantLib itself is licensed under the QuantLib License (BSD-modified).

About

Pre-built QuantLib DLL for Windows (x64, MSVC)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

QuantLib-DLL

Pre-built QuantLib as a Windows x64 DLL.

Upstream QuantLib blocks DLL builds on MSVC. This project patches the source to enable shared library builds and publishes pre-built binaries as GitHub Release assets.

Download

Go to Releases and download the zip for your QuantLib version.

Extract to a directory of your choice (e.g. C:\quantlib-deps):

Expand-Archive QuantLib-1.41-x64-dll.zip -DestinationPath C:\quantlib-deps

This gives you:

C:\quantlib-deps\
QuantLib-1.41\
bin\QuantLib-x64-mt.dll # Runtime DLL
lib\QuantLib-x64-mt.lib # Import library for linking
include\ql\... # QuantLib headers (patched for DLL)
boost_1_87_0\
boost\... # Boost headers

Build locally

Requirements: Visual Studio 2022 (C++ workload), CMake, 7-Zip.

.\scripts\Build-QuantLibDLL.ps1-PackageZip

By default the working directory is build/ and the install directory is install/ inside the repo, so you can inspect the patched QuantLib sources at build\QuantLib-<version>\ after the build.

With custom versions and install location:

.\scripts\Build-QuantLibDLL.ps1`-QuantLibVersion 1.41`-BoostVersion 1.87.0`-InstallDir C:\Users\me\quantlib-deps\QuantLib-1.41`-PackageZip

Include the QuantLib test suite:

.\scripts\Build-QuantLibDLL.ps1-BuildTests -PackageZip

Build and run the test suite:

.\scripts\Build-QuantLibDLL.ps1-RunTests -PackageZip

Patches applied

Eight patches are applied to the QuantLib source to enable DLL builds:

FilePatch
cmake/Platform.cmakeRemove FATAL_ERROR that blocks DLL builds on MSVC and suppress C4251 warnings
ql/CMakeLists.txtAdd RUNTIME DESTINATION so cmake --install copies the DLL
ql/qldefines.hpp.cfgInject QL_EXPORT / QL_IMPORT_ONLY macros for dllexport/dllimport
ql/math/distributions/normaldistribution.hppAdd QL_EXPORT to InverseCumulativeNormal and MoroInverseCumulativeNormal
ql/cashflows/lineartsrpricer.hppAdd QL_EXPORT to defaultLowerBound and defaultUpperBound static const members
ql/experimental/math/gaussiancopulapolicy.hppAdd QL_EXPORT to density_ and cumulative_ static const members
ql/math/randomnumbers/primitivepolynomials.hppAdd QL_EXPORT to PrimitivePolynomials extern array
Singleton DLL fixCreate ql/patterns/singleton.cpp with explicit template instantiations and add extern template declarations to each singleton header so only one copy of each singleton exists across DLL/EXE boundaries

Patches 3–7 are needed because CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not export private static const class data members or extern "C" arrays. Without these patches, consumers get unresolved symbol errors at link time.

The singleton fix (patch 8) solves a separate problem: without it, both the DLL and any consuming EXE independently instantiate Singleton<T>::instance(), producing two separate singleton objects. This causes widespread test failures because, for example, Settings::instance().evaluationDate() set in the EXE has no effect on the DLL's own copy.

Build details

  • Visual Studio 2022 (MSVC)
  • CMake with BUILD_SHARED_LIBS=ON and CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
  • MSVC DLL CRT runtime (/MD)
  • Boost headers only (no compiled Boost libraries needed)

License

This repository (build scripts and CI configuration) is licensed under the BSD 3-Clause License. QuantLib itself is licensed under the QuantLib License (BSD-modified).

About

Pre-built QuantLib DLL for Windows (x64, MSVC)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

QuantLib-DLL

Pre-built QuantLib as a Windows x64 DLL.

Upstream QuantLib blocks DLL builds on MSVC. This project patches the source to enable shared library builds and publishes pre-built binaries as GitHub Release assets.

Download

Go to Releases and download the zip for your QuantLib version.

Extract to a directory of your choice (e.g. C:\quantlib-deps):

Expand-Archive QuantLib-1.41-x64-dll.zip -DestinationPath C:\quantlib-deps

This gives you:

C:\quantlib-deps\
QuantLib-1.41\
bin\QuantLib-x64-mt.dll # Runtime DLL
lib\QuantLib-x64-mt.lib # Import library for linking
include\ql\... # QuantLib headers (patched for DLL)
boost_1_87_0\
boost\... # Boost headers

Build locally

Requirements: Visual Studio 2022 (C++ workload), CMake, 7-Zip.

.\scripts\Build-QuantLibDLL.ps1-PackageZip

By default the working directory is build/ and the install directory is install/ inside the repo, so you can inspect the patched QuantLib sources at build\QuantLib-<version>\ after the build.

With custom versions and install location:

.\scripts\Build-QuantLibDLL.ps1`-QuantLibVersion 1.41`-BoostVersion 1.87.0`-InstallDir C:\Users\me\quantlib-deps\QuantLib-1.41`-PackageZip

Include the QuantLib test suite:

.\scripts\Build-QuantLibDLL.ps1-BuildTests -PackageZip

Build and run the test suite:

.\scripts\Build-QuantLibDLL.ps1-RunTests -PackageZip

Patches applied

Eight patches are applied to the QuantLib source to enable DLL builds:

FilePatch
cmake/Platform.cmakeRemove FATAL_ERROR that blocks DLL builds on MSVC and suppress C4251 warnings
ql/CMakeLists.txtAdd RUNTIME DESTINATION so cmake --install copies the DLL
ql/qldefines.hpp.cfgInject QL_EXPORT / QL_IMPORT_ONLY macros for dllexport/dllimport
ql/math/distributions/normaldistribution.hppAdd QL_EXPORT to InverseCumulativeNormal and MoroInverseCumulativeNormal
ql/cashflows/lineartsrpricer.hppAdd QL_EXPORT to defaultLowerBound and defaultUpperBound static const members
ql/experimental/math/gaussiancopulapolicy.hppAdd QL_EXPORT to density_ and cumulative_ static const members
ql/math/randomnumbers/primitivepolynomials.hppAdd QL_EXPORT to PrimitivePolynomials extern array
Singleton DLL fixCreate ql/patterns/singleton.cpp with explicit template instantiations and add extern template declarations to each singleton header so only one copy of each singleton exists across DLL/EXE boundaries

Patches 3–7 are needed because CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not export private static const class data members or extern "C" arrays. Without these patches, consumers get unresolved symbol errors at link time.

The singleton fix (patch 8) solves a separate problem: without it, both the DLL and any consuming EXE independently instantiate Singleton<T>::instance(), producing two separate singleton objects. This causes widespread test failures because, for example, Settings::instance().evaluationDate() set in the EXE has no effect on the DLL's own copy.

Build details

  • Visual Studio 2022 (MSVC)
  • CMake with BUILD_SHARED_LIBS=ON and CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
  • MSVC DLL CRT runtime (/MD)
  • Boost headers only (no compiled Boost libraries needed)

License

This repository (build scripts and CI configuration) is licensed under the BSD 3-Clause License. QuantLib itself is licensed under the QuantLib License (BSD-modified).

About

Pre-built QuantLib DLL for Windows (x64, MSVC)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

QuantLib-DLL

Pre-built QuantLib as a Windows x64 DLL.

Upstream QuantLib blocks DLL builds on MSVC. This project patches the source to enable shared library builds and publishes pre-built binaries as GitHub Release assets.

Download

Go to Releases and download the zip for your QuantLib version.

Extract to a directory of your choice (e.g. C:\quantlib-deps):

Expand-Archive QuantLib-1.41-x64-dll.zip -DestinationPath C:\quantlib-deps

This gives you:

C:\quantlib-deps\
QuantLib-1.41\
bin\QuantLib-x64-mt.dll # Runtime DLL
lib\QuantLib-x64-mt.lib # Import library for linking
include\ql\... # QuantLib headers (patched for DLL)
boost_1_87_0\
boost\... # Boost headers

Build locally

Requirements: Visual Studio 2022 (C++ workload), CMake, 7-Zip.

.\scripts\Build-QuantLibDLL.ps1-PackageZip

By default the working directory is build/ and the install directory is install/ inside the repo, so you can inspect the patched QuantLib sources at build\QuantLib-<version>\ after the build.

With custom versions and install location:

.\scripts\Build-QuantLibDLL.ps1`-QuantLibVersion 1.41`-BoostVersion 1.87.0`-InstallDir C:\Users\me\quantlib-deps\QuantLib-1.41`-PackageZip

Include the QuantLib test suite:

.\scripts\Build-QuantLibDLL.ps1-BuildTests -PackageZip

Build and run the test suite:

.\scripts\Build-QuantLibDLL.ps1-RunTests -PackageZip

Patches applied

Eight patches are applied to the QuantLib source to enable DLL builds:

FilePatch
cmake/Platform.cmakeRemove FATAL_ERROR that blocks DLL builds on MSVC and suppress C4251 warnings
ql/CMakeLists.txtAdd RUNTIME DESTINATION so cmake --install copies the DLL
ql/qldefines.hpp.cfgInject QL_EXPORT / QL_IMPORT_ONLY macros for dllexport/dllimport
ql/math/distributions/normaldistribution.hppAdd QL_EXPORT to InverseCumulativeNormal and MoroInverseCumulativeNormal
ql/cashflows/lineartsrpricer.hppAdd QL_EXPORT to defaultLowerBound and defaultUpperBound static const members
ql/experimental/math/gaussiancopulapolicy.hppAdd QL_EXPORT to density_ and cumulative_ static const members
ql/math/randomnumbers/primitivepolynomials.hppAdd QL_EXPORT to PrimitivePolynomials extern array
Singleton DLL fixCreate ql/patterns/singleton.cpp with explicit template instantiations and add extern template declarations to each singleton header so only one copy of each singleton exists across DLL/EXE boundaries

Patches 3–7 are needed because CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not export private static const class data members or extern "C" arrays. Without these patches, consumers get unresolved symbol errors at link time.

The singleton fix (patch 8) solves a separate problem: without it, both the DLL and any consuming EXE independently instantiate Singleton<T>::instance(), producing two separate singleton objects. This causes widespread test failures because, for example, Settings::instance().evaluationDate() set in the EXE has no effect on the DLL's own copy.

Build details

  • Visual Studio 2022 (MSVC)
  • CMake with BUILD_SHARED_LIBS=ON and CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
  • MSVC DLL CRT runtime (/MD)
  • Boost headers only (no compiled Boost libraries needed)

License

This repository (build scripts and CI configuration) is licensed under the BSD 3-Clause License. QuantLib itself is licensed under the QuantLib License (BSD-modified).

About

Pre-built QuantLib DLL for Windows (x64, MSVC)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

QuantLib-DLL

Pre-built QuantLib as a Windows x64 DLL.

Upstream QuantLib blocks DLL builds on MSVC. This project patches the source to enable shared library builds and publishes pre-built binaries as GitHub Release assets.

Download

Go to Releases and download the zip for your QuantLib version.

Extract to a directory of your choice (e.g. C:\quantlib-deps):

Expand-Archive QuantLib-1.41-x64-dll.zip -DestinationPath C:\quantlib-deps

This gives you:

C:\quantlib-deps\
QuantLib-1.41\
bin\QuantLib-x64-mt.dll # Runtime DLL
lib\QuantLib-x64-mt.lib # Import library for linking
include\ql\... # QuantLib headers (patched for DLL)
boost_1_87_0\
boost\... # Boost headers

Build locally

Requirements: Visual Studio 2022 (C++ workload), CMake, 7-Zip.

.\scripts\Build-QuantLibDLL.ps1-PackageZip

By default the working directory is build/ and the install directory is install/ inside the repo, so you can inspect the patched QuantLib sources at build\QuantLib-<version>\ after the build.

With custom versions and install location:

.\scripts\Build-QuantLibDLL.ps1`-QuantLibVersion 1.41`-BoostVersion 1.87.0`-InstallDir C:\Users\me\quantlib-deps\QuantLib-1.41`-PackageZip

Include the QuantLib test suite:

.\scripts\Build-QuantLibDLL.ps1-BuildTests -PackageZip

Build and run the test suite:

.\scripts\Build-QuantLibDLL.ps1-RunTests -PackageZip

Patches applied

Eight patches are applied to the QuantLib source to enable DLL builds:

FilePatch
cmake/Platform.cmakeRemove FATAL_ERROR that blocks DLL builds on MSVC and suppress C4251 warnings
ql/CMakeLists.txtAdd RUNTIME DESTINATION so cmake --install copies the DLL
ql/qldefines.hpp.cfgInject QL_EXPORT / QL_IMPORT_ONLY macros for dllexport/dllimport
ql/math/distributions/normaldistribution.hppAdd QL_EXPORT to InverseCumulativeNormal and MoroInverseCumulativeNormal
ql/cashflows/lineartsrpricer.hppAdd QL_EXPORT to defaultLowerBound and defaultUpperBound static const members
ql/experimental/math/gaussiancopulapolicy.hppAdd QL_EXPORT to density_ and cumulative_ static const members
ql/math/randomnumbers/primitivepolynomials.hppAdd QL_EXPORT to PrimitivePolynomials extern array
Singleton DLL fixCreate ql/patterns/singleton.cpp with explicit template instantiations and add extern template declarations to each singleton header so only one copy of each singleton exists across DLL/EXE boundaries

Patches 3–7 are needed because CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not export private static const class data members or extern "C" arrays. Without these patches, consumers get unresolved symbol errors at link time.

The singleton fix (patch 8) solves a separate problem: without it, both the DLL and any consuming EXE independently instantiate Singleton<T>::instance(), producing two separate singleton objects. This causes widespread test failures because, for example, Settings::instance().evaluationDate() set in the EXE has no effect on the DLL's own copy.

Build details

  • Visual Studio 2022 (MSVC)
  • CMake with BUILD_SHARED_LIBS=ON and CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
  • MSVC DLL CRT runtime (/MD)
  • Boost headers only (no compiled Boost libraries needed)

License

This repository (build scripts and CI configuration) is licensed under the BSD 3-Clause License. QuantLib itself is licensed under the QuantLib License (BSD-modified).

About

Pre-built QuantLib DLL for Windows (x64, MSVC)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

QuantLib-DLL

Pre-built QuantLib as a Windows x64 DLL.

Upstream QuantLib blocks DLL builds on MSVC. This project patches the source to enable shared library builds and publishes pre-built binaries as GitHub Release assets.

Download

Go to Releases and download the zip for your QuantLib version.

Extract to a directory of your choice (e.g. C:\quantlib-deps):

Expand-Archive QuantLib-1.41-x64-dll.zip -DestinationPath C:\quantlib-deps

This gives you:

C:\quantlib-deps\
QuantLib-1.41\
bin\QuantLib-x64-mt.dll # Runtime DLL
lib\QuantLib-x64-mt.lib # Import library for linking
include\ql\... # QuantLib headers (patched for DLL)
boost_1_87_0\
boost\... # Boost headers

Build locally

Requirements: Visual Studio 2022 (C++ workload), CMake, 7-Zip.

.\scripts\Build-QuantLibDLL.ps1-PackageZip

By default the working directory is build/ and the install directory is install/ inside the repo, so you can inspect the patched QuantLib sources at build\QuantLib-<version>\ after the build.

With custom versions and install location:

.\scripts\Build-QuantLibDLL.ps1`-QuantLibVersion 1.41`-BoostVersion 1.87.0`-InstallDir C:\Users\me\quantlib-deps\QuantLib-1.41`-PackageZip

Include the QuantLib test suite:

.\scripts\Build-QuantLibDLL.ps1-BuildTests -PackageZip

Build and run the test suite:

.\scripts\Build-QuantLibDLL.ps1-RunTests -PackageZip

Patches applied

Eight patches are applied to the QuantLib source to enable DLL builds:

FilePatch
cmake/Platform.cmakeRemove FATAL_ERROR that blocks DLL builds on MSVC and suppress C4251 warnings
ql/CMakeLists.txtAdd RUNTIME DESTINATION so cmake --install copies the DLL
ql/qldefines.hpp.cfgInject QL_EXPORT / QL_IMPORT_ONLY macros for dllexport/dllimport
ql/math/distributions/normaldistribution.hppAdd QL_EXPORT to InverseCumulativeNormal and MoroInverseCumulativeNormal
ql/cashflows/lineartsrpricer.hppAdd QL_EXPORT to defaultLowerBound and defaultUpperBound static const members
ql/experimental/math/gaussiancopulapolicy.hppAdd QL_EXPORT to density_ and cumulative_ static const members
ql/math/randomnumbers/primitivepolynomials.hppAdd QL_EXPORT to PrimitivePolynomials extern array
Singleton DLL fixCreate ql/patterns/singleton.cpp with explicit template instantiations and add extern template declarations to each singleton header so only one copy of each singleton exists across DLL/EXE boundaries

Patches 3–7 are needed because CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not export private static const class data members or extern "C" arrays. Without these patches, consumers get unresolved symbol errors at link time.

The singleton fix (patch 8) solves a separate problem: without it, both the DLL and any consuming EXE independently instantiate Singleton<T>::instance(), producing two separate singleton objects. This causes widespread test failures because, for example, Settings::instance().evaluationDate() set in the EXE has no effect on the DLL's own copy.

Build details

  • Visual Studio 2022 (MSVC)
  • CMake with BUILD_SHARED_LIBS=ON and CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
  • MSVC DLL CRT runtime (/MD)
  • Boost headers only (no compiled Boost libraries needed)

License

This repository (build scripts and CI configuration) is licensed under the BSD 3-Clause License. QuantLib itself is licensed under the QuantLib License (BSD-modified).

About

Pre-built QuantLib DLL for Windows (x64, MSVC)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages