[gdal-dev] [EXTERNAL] Re: Custom raster driver startup issues

Meyer, Jesse R. (GSFC-618.0)[SCIENCE SYSTEMS AND APPLICATIONS INC] jesse.r.meyer at nasa.gov
Thu Dec 14 14:20:48 PST 2023


Per 1, this was my understanding – thanks for confirming.
2,  It might be that I’ve compiled with a different version of Microsoft’s C runtime library.  I’ll play with that.
3, I did not know the last bit regarding extern “C”.  Is it in the documentation?  I’ll try this first.
4, good idea, thanks!

If I encounter more issues tomorrow I’ll report back.  I appreciate the support.

Jesse

From: Even Rouault <even.rouault at spatialys.com>
Date: Thursday, December 14, 2023 at 4:19 PM
To: "Meyer, Jesse R. (GSFC-618.0)[SCIENCE SYSTEMS AND APPLICATIONS INC]" <jesse.r.meyer at nasa.gov>, gdal-dev <gdal-dev at lists.osgeo.org>
Subject: [EXTERNAL] Re: [gdal-dev] Custom raster driver startup issues

CAUTION: This email originated from outside of NASA.  Please take care when clicking links or opening attachments.  Use the "Report Message" button to report suspicious messages to the NASA SOC.



- If you build a plugin against GDAL X.Y, you must run it against GDAL X.Y, and not an earlier or later version since the C++ ABI changes between feature versions (you should however be able to use a plugin, built against X.Y.some_patch_version, against X.Y.another_path_version)

- The error you get about specified procedure not found generally indicate that your plugin links to some library that is not found in the PATH / LD_LIBRARY_PATH. dlopen() / LoadLibrary() aren't super verbose about the reasons. You might have to use ldd or DependencyWalker to figure out the runtime linking issue.

- If you use GDALRegister_X(), then your DLL must be called exactly "gdal_X.dll" / "gdal_X.so"  . Or use "GDALRegisterMe()" as the registration function.  GDALRegister_X or GDALRegisterMe must have C export style (extern "C").

- Before trying GDALOpen(), check with "gdalinfo --format X" that your driver is loaded.
Le 14/12/2023 à 21:52, Meyer, Jesse R. (GSFC-618.0)[SCIENCE SYSTEMS AND APPLICATIONS INC] via gdal-dev a écrit :
Hi,

After carefully following the advice here on the lists and the Raster driver tutorial GDAL isn’t loading the driver.

I am relying on the AutoLoadDrivers function.

When I GDALAllRegister(), followed by a GDALOpen(“path/to/custom/raster.ext”, RA_ReadOnly);, GDAL states that the file is not recognized as a supported file format.  The application was built against the exact version of GDAL used to link the custom driver code.  GDAL 3.7.2

I tried running an older GDAL version (3.6.3) in a python environment.  When I `from osgeo import gdal`, there are two errors that are printed.


  1.  Can’t load requested DLL – then it printed the full path and file name of the driver .dll, so it can find it!
  2.  The specified procedure could not be found

These look like python specific error messages to me, and probably stem from a gdal version mismatch. I’m assuming #2 is emitted in a trivial sense because the .dll could not be opened.  Curiously the error message was printed twice.  I did not expect this to work but my hope was to see a more detailed error message.

I have exported the GDALRegister_X() function, in accordance with the documentation.  The driver code compiles cleanly and follows almost verbatim with the tutorial.

How should I approach diagnosing the problem?

Best,
Jesse



_______________________________________________

gdal-dev mailing list

gdal-dev at lists.osgeo.org<mailto:gdal-dev at lists.osgeo.org>

https://lists.osgeo.org/mailman/listinfo/gdal-dev

--

http://www.spatialys.com<http://www.spatialys.com/>

My software is free, but my time generally not.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20231214/028a3b2f/attachment.htm>


More information about the gdal-dev mailing list