<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">IMO you ask for trouble when you
manually inject <span>-DFRMT_mrsid=ON into CFLAGS and CXXFLAGS.
This is CMake input ("ON"!). Let the configuration do that for
you. Did configuration successfully detect the dependency? Check
the config logs.<br>
</span></div>
<div class="moz-cite-prefix"><span><br>
</span></div>
<div class="moz-cite-prefix"><span>Kai<br>
</span></div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Am 22.02.25 um 05:15 schrieb Michael
Katz via gdal-dev:<br>
</div>
<blockquote type="cite"
cite="mid:1315136554.3201494.1740197755356@mail.yahoo.com">
<div class="yahoo-style-wrap">
<div dir="ltr" data-setdir="false">I am getting the following
link errors when building my application in MSVC++:</div>
<div dir="ltr" data-setdir="false"><br>
</div>
<div dir="ltr" data-setdir="false">
<div>
<div>1>gdal.lib(gdalallregister.cpp.obj) : error LNK2019:
unresolved external symbol _GDALRegister_ECW referenced in
function _GDALAllRegister@0</div>
<div>1>gdal.lib(gdalallregister.cpp.obj) : error LNK2019:
unresolved external symbol _GDALRegister_JP2ECW referenced
in function _GDALAllRegister@0</div>
<div>1>gdal.lib(gdalallregister.cpp.obj) : error LNK2019:
unresolved external symbol _GDALRegister_MrSID referenced
in function _GDALAllRegister@0</div>
<div><br>
</div>
</div>
I am linking statically to GDAL built as a static library with
vcpkg (which builds without error). I am using a custom
x86-windows.cmake file with vcpkg, customized mainly to
include MrSID and ECW functionality in GDAL. I have pasted the
cmake text at the bottom of this email.</div>
<div dir="ltr" data-setdir="false"><br>
</div>
<div dir="ltr" data-setdir="false">From what I can see in the
GDAL code, it's behaving as if
<div>
<div dir="ltr" data-setdir="false">gdal/frmts/mrsid/mrsiddataset.cpp
(which contains the function <span><span>GDALRegister_MrSID)</span></span>
wasn't compiled into the library, yet the following code
in <span>frmts/gdalallregister.cpp was compiled.</span></div>
</div>
<div dir="ltr" data-setdir="false"><br>
</div>
<div dir="ltr" data-setdir="false">
<div>
<div>#ifdef FRMT_mrsid</div>
<div> GDALRegister_MrSID();</div>
<div>#endif</div>
<div><br>
</div>
</div>
<div dir="ltr" data-setdir="false">Can you help me
understand how this could happen? What actually controls
whether <span>gdal/frmts/mrsid/mrsiddataset.cpp gets
compiled into the library?</span></div>
<br>
</div>
</div>
<div dir="ltr" data-setdir="false"><br>
</div>
<div dir="ltr" data-setdir="false">---</div>
<div dir="ltr" data-setdir="false"><span><span>x86-windows.cmake:</span></span><br>
</div>
<div dir="ltr" data-setdir="false"><br>
</div>
<div dir="ltr" data-setdir="false">
<div>
<div>
<div><span>set</span>(VCPKG_TARGET_ARCHITECTURE x86)</div>
<div><span>set</span>(VCPKG_CRT_LINKAGE static)</div>
<div><span>set</span>(VCPKG_LIBRARY_LINKAGE static)</div>
<div><span>set</span>(VCPKG_BUILD_TYPE release)</div>
<div><span>set</span>(ENV{CMAKE_WINDOWS_KITS_10_DIR} <span>"C:</span><span>\\</span><span>Program
Files (x86)</span><span>\\</span><span>Windows Kits</span><span>\\</span><span>10"</span>)</div>
<div><span>set</span>(VCPKG_CMAKE_CONFIGURE_OPTIONS <span>"-DCMAKE_WINDOWS_KITS_10_DIR=C:</span><span>\\</span><span>Program
Files (x86)</span><span>\\</span><span>Windows Kits</span><span>\\</span><span>10"</span>)</div>
<div><span>set</span>(VCPKG_ENV_PASSTHROUGH
CMAKE_WINDOWS_KITS_10_DIR)</div>
<br>
<div><span># CMAKE_CURRENT_LIST_DIR is the triplets
directory</span></div>
<div><span># such as
C:/Users/michael.katz/Documents/vcpkg/triplets</span></div>
<div><span>message</span>( STATUS <span>"</span><span>\n\n</span><span>-----------------------CMAKE_CURRENT_LIST_DIR
= ${CMAKE_CURRENT_LIST_DIR}</span><span>\n\n</span><span>"</span>
)</div>
<br>
<div><span>if</span> (PORT <span>MATCHES</span> <span>"gdal"</span>)</div>
<div><span> string</span>(</div>
<div> CONCAT x</div>
<div> <span>" </span><span>\"</span><span>-DMRSID_INCLUDE_DIR=${CMAKE_CURRENT_LIST_DIR}/../sdk/MrSID_DSDK-9.5.5.5244-win32-vc17/Raster_DSDK/include</span><span>\"</span><span>"</span></div>
<div> <span>" </span><span>\"</span><span>-DMRSID_LIBRARY=${CMAKE_CURRENT_LIST_DIR}/../sdk/MrSID_DSDK-9.5.5.5244-win32-vc17/Raster_DSDK/lib/lti_dsdk.lib</span><span>\"</span><span>"</span></div>
<div> <span>" </span><span>\"</span><span>-DGDAL_USE_MRSID=ON</span><span>\"</span><span>"</span></div>
<div> <span>" </span><span>\"</span><span>-DFRMT_mrsid=ON</span><span>\"</span><span>"</span></div>
<div> <span>" </span><span>\"</span><span>-DECW_INCLUDE_DIR=${CMAKE_CURRENT_LIST_DIR}/../sdk/ecw/Hexagon/ERDAS_ECW_JPEG_2000_SDK_5.5.0/Desktop_Read-Only/include</span><span>\"</span><span>"</span></div>
<div> <span>" </span><span>\"</span><span>-DECW_LIBRARY=${CMAKE_CURRENT_LIST_DIR}/../sdk/ecw/Hexagon/ERDAS_ECW_JPEG_2000_SDK_5.5.0/Desktop_Read-Only/lib/vc141/Win32/NCSEcw.lib</span><span>\"</span><span>"</span></div>
<div> <span>" </span><span>\"</span><span>-DGDAL_USE_ECW=ON</span><span>\"</span><span>"</span></div>
<div> <span>" </span><span>\"</span><span>-DFRMT_ecw=ON</span><span>\"</span><span>"</span></div>
<div> )</div>
<div><span> set</span>(VCPKG_CMAKE_CONFIGURE_OPTIONS <span>"${VCPKG_CMAKE_CONFIGURE_OPTIONS}
${x}"</span> )</div>
<div><span> set</span>(VCPKG_CXX_FLAGS <span>"${VCPKG_CXX_FLAGS}
-DFRMT_mrsid=ON"</span>)</div>
<div><span> set</span>(VCPKG_C_FLAGS <span>"${VCPKG_C_FLAGS}
-DFRMT_mrsid=ON"</span>)</div>
<div><span> set</span>(VCPKG_CXX_FLAGS <span>"${VCPKG_CXX_FLAGS}
-DFRMT_ecw=ON"</span>)</div>
<div><span> set</span>(VCPKG_C_FLAGS <span>"${VCPKG_C_FLAGS}
-DFRMT_ecw=ON"</span>)</div>
<div><span>endif</span>()</div>
<br>
<div><span>message</span>( STATUS <span>"</span><span>\n\n</span><span>-----------------------VCPKG_CMAKE_CONFIGURE_OPTIONS
= ${VCPKG_CMAKE_CONFIGURE_OPTIONS}</span><span>\n\n</span><span>"</span>
)</div>
<br>
<div><span>message</span>( STATUS <span>"</span><span>\n\n</span><span>-----------------------FEATURES
= ${FEATURES}</span><span>\n\n</span><span>"</span> )</div>
<br>
</div>
</div>
<br>
</div>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
gdal-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gdal-dev@lists.osgeo.org">gdal-dev@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/gdal-dev">https://lists.osgeo.org/mailman/listinfo/gdal-dev</a>
</pre>
</blockquote>
<p><br>
</p>
</body>
</html>