<!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>