[gdal-dev] Preventing symbol export in custom GDAL build
Kai Pastor, DG0YT
dg0yt at darc.de
Wed Dec 10 10:03:37 PST 2025
Am 10.12.25 um 16:36 schrieb David Klaus via gdal-dev:
> My company produces a custom GDAL build using vcpkg. GDAL itself is
> built as a DLL, while all of its dependencies are built as static
> libraries and linked into GDAL. To support this, I created a custom
> triplet -- x64-windows-mixed-carlson-gdal.cmake -- included in the
> attached custom-triplets folder.
>
> The resulting GDAL DLL works, but it exposes an unintended side
> effect: symbols from some static dependencies—for example,
> libspatialite and libcurl—are being exported from the GDAL DLL. This
> becomes a problem because the environment where our GDAL build runs
> also loads its own custom builds of these libraries, and the exported
> symbols conflict with those versions.
I have this seen this in vpckg for other libraries, and it can be fixed.
However, I would be surprised if it really occurs for libcurl.
> So far, I have mitigated this for libspatialite by adding a patch --
> cs_ensure_no_dll_export.patch -- in its portfile to disable symbol
> export by overriding defines in various libspatialite headers.
> However, this approach is not ideal because:
>
> 1. It requires maintaining patches for every conflicting library
> indefinitely, adding ongoing development overhead.
> 2. The solution is brittle; updates to any patched library may break
> the build.
>
> To me this seems like a fairly common use case, but our environment is
> unique. So, perhaps others don't need a build of GDAL that links it's
> dependencies statically. In any case, I would appreciate any guidance
> on how to prevent symbol exports from GDAL’s statically linked
> dependencies in a more robust, maintainable way.
You get a robust solution by upstreaming. At least to vcpkg, better to
each actual source (libspatialite etc.). GDAL can't fix anything about
careless dllexport in its dependencies.
Kai
vcpkg contributor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20251210/e2b2f322/attachment.htm>
More information about the gdal-dev
mailing list