Thanks for confirming that libcurl is not causing problems here.
libspatialite does have minor issues.
- It always builds with dllexport but never applies dllimport.
- The controlling macro is named DLL_EXPORT which is not specific to the
package. Reverse dependencies following the same idea will turn on
dllexport when they include libspatialite headers.
I am testing libspatialite modifications now in
https://github.com/microsoft/vcpkg/pull/48834. MSVC isn't a local
platform for me, and I rarely deal with nmake since GDAL moved to CMake.
So vcpkg CI building reverse dependencies is my only indicator of
success. External testing welcome.
Kai
Am 12.12.25 um 00:18 schrieb David Klaus:
All,
Using a def file to obfuscate the symbol names proved to be a bust. I
was able to create obfuscated names, but that didn't remove the
original symbols from the export table. In the end, as many have
commented, the only way I could remove the spatialite symbols from the
export table was to patch the spatialite files as seen in my
custom-portfile folder.
As far as the libcurl export conflicts, this turned out to be a red
herring. The conflicting symbol was __NULL_IMPORT_DESCRIPTOR. After a
lot of searching I realized that a dependency of the project I was
building also included my custom gdal library. To resolve this issue,
I simply removed gdal from one of my libraries. This resolved all the
conflicts I know about.
If anyone has any further questions or comments, please let me know,
On Thu, Dec 11, 2025 at 9:01 AM David Klaus <[email protected]> wrote:
Kai,
I am still working on this issue which is why I haven't updated
the thread with a solution. I do not intend to keep the solution
private.
The libspatialite portfile I provided contains a custom patch. I
can confirm that this patch prevents export of the libspatialite
symbols that caused conflict in my previous build. I have not
attempted something similar for libcurl. As I mentioned in my
original email, I don't particularly like this solution.
Yesterday I tried to patch in def files to the GDAL build. I was
hoping that, by removing the libspatialite symbols from the def
files export, I would be able to prevent export of these symbols.
Unfortunately, this didn't work. Now, I am currently investigating
using def files to rename the conflicting libspatialite symbols on
export. Hopefully I have more information on this today though it
may take longer,
On Thu, Dec 11, 2025 at 3:43 AM Kai Pastor, DG0YT <[email protected]>
wrote:
The proper fix is modifying libspatialite IMO.
Please confirm if there is an issue with libcurl.
I do not like to see uncertainty being made public and fixes
being made private.
Kai
Am 10.12.25 um 20:10 schrieb David Klaus:
All,
Thank you for the suggestions. And to clarify: yes this is an
MSVC build so -fvisibility=hidden is not an option. I am
currently investigating adding a def file to curate the
symbols exported by the gdal dll. I removed the decorated
symbols and built. The resulting dll still reports the
decorated symbols, but I'm hopeful that this is expected
behavior. I'm going to attempt to remove the libspatialite
symbols from the def file and rebuild,
On Wed, Dec 10, 2025 at 1:06 PM Kai Pastor, DG0YT via
gdal-dev <[email protected]> wrote:
In vcpkg, x64-windows means MSVC.
And even in the visibility world, you can find libs that
get it wrong when the attention is exclusively on shared
libs.
(Studying the proposed libspatialite patch, I believe I
spotted different defaults for visibility in different
chunks. Needs more investigation...)
Am 10.12.25 um 19:02 schrieb Andrew Bell:
On Wed, Dec 10, 2025 at 12:55 PM Kai Pastor, DG0YT via
gdal-dev <[email protected]> wrote:
Am 10.12.25 um 17:09 schrieb Andrew Bell via gdal-dev:
Hi,
All symbols that aren't specifically exported
should be hidden if when you build the flag
"-fvisibility=hidden" is set. See
cmake/helpers/configure.cmake.
I don't think this will help with MSVC and its
dllexport declarations.
I don't know that this is MSVC. I thought it was a GCC
build on Windows, but regardless, things are essentially
the same (on Windows you *must* export all the symbols
you want visible). I don't know spatialite, but there
should be some sort of DLL marker (like CPL_DLL in GDAL)
that can be turned off when building a static library
that you then link into GDAL.
This may be helpful:
https://gcc.gnu.org/wiki/Visibility
--
Andrew Bell
[email protected]
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev
--
David Klaus
Carlson Software
*Disclaimer*
The information contained in this communication from the
sender is confidential. It is intended solely for use by the
recipient and others authorized to receive it. If you are not
the recipient, you are hereby notified that any disclosure,
copying, distribution or taking action in relation of the
contents of this information is strictly prohibited and may
be unlawful.
--
David Klaus
Carlson Software
--
David Klaus
Carlson Software
*Disclaimer*
The information contained in this communication from the sender is
confidential. It is intended solely for use by the recipient and
others authorized to receive it. If you are not the recipient, you are
hereby notified that any disclosure, copying, distribution or taking
action in relation of the contents of this information is strictly
prohibited and may be unlawful.
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev