I am getting the following link errors when building my application in MSVC++:
1>gdal.lib(gdalallregister.cpp.obj) : error LNK2019: unresolved external symbol
_GDALRegister_ECW referenced in function
_GDALAllRegister@01>gdal.lib(gdalallregister.cpp.obj) : error LNK2019:
unresolved external symbol _GDALRegister_JP2ECW referenced in function
_GDALAllRegister@01>gdal.lib(gdalallregister.cpp.obj) : error LNK2019:
unresolved external symbol _GDALRegister_MrSID referenced in function
_GDALAllRegister@0
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.
>From what I can see in the GDAL code, it's behaving as if
>gdal/frmts/mrsid/mrsiddataset.cpp (which contains the function
>GDALRegister_MrSID) wasn't compiled into the library, yet the following code
>in frmts/gdalallregister.cpp was compiled.
#ifdef FRMT_mrsid GDALRegister_MrSID();#endif
Can you help me understand how this could happen? What actually controls
whether gdal/frmts/mrsid/mrsiddataset.cpp gets compiled into the library?
---x86-windows.cmake:
set(VCPKG_TARGET_ARCHITECTURE x86)set(VCPKG_CRT_LINKAGE
static)set(VCPKG_LIBRARY_LINKAGE static)set(VCPKG_BUILD_TYPE
release)set(ENV{CMAKE_WINDOWS_KITS_10_DIR} "C:\\Program Files (x86)\\Windows
Kits\\10")set(VCPKG_CMAKE_CONFIGURE_OPTIONS
"-DCMAKE_WINDOWS_KITS_10_DIR=C:\\Program Files (x86)\\Windows
Kits\\10")set(VCPKG_ENV_PASSTHROUGH CMAKE_WINDOWS_KITS_10_DIR)
# CMAKE_CURRENT_LIST_DIR is the triplets directory# such as
C:/Users/michael.katz/Documents/vcpkg/tripletsmessage( STATUS
"\n\n-----------------------CMAKE_CURRENT_LIST_DIR =
${CMAKE_CURRENT_LIST_DIR}\n\n" )
if (PORT MATCHES "gdal") string( CONCAT x "
\"-DMRSID_INCLUDE_DIR=${CMAKE_CURRENT_LIST_DIR}/../sdk/MrSID_DSDK-9.5.5.5244-win32-vc17/Raster_DSDK/include\""
"
\"-DMRSID_LIBRARY=${CMAKE_CURRENT_LIST_DIR}/../sdk/MrSID_DSDK-9.5.5.5244-win32-vc17/Raster_DSDK/lib/lti_dsdk.lib\""
" \"-DGDAL_USE_MRSID=ON\"" " \"-DFRMT_mrsid=ON\"" "
\"-DECW_INCLUDE_DIR=${CMAKE_CURRENT_LIST_DIR}/../sdk/ecw/Hexagon/ERDAS_ECW_JPEG_2000_SDK_5.5.0/Desktop_Read-Only/include\""
"
\"-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\""
" \"-DGDAL_USE_ECW=ON\"" " \"-DFRMT_ecw=ON\"" )
set(VCPKG_CMAKE_CONFIGURE_OPTIONS "${VCPKG_CMAKE_CONFIGURE_OPTIONS} ${x}" )
set(VCPKG_CXX_FLAGS "${VCPKG_CXX_FLAGS} -DFRMT_mrsid=ON") set(VCPKG_C_FLAGS
"${VCPKG_C_FLAGS} -DFRMT_mrsid=ON") set(VCPKG_CXX_FLAGS "${VCPKG_CXX_FLAGS}
-DFRMT_ecw=ON") set(VCPKG_C_FLAGS "${VCPKG_C_FLAGS} -DFRMT_ecw=ON")endif()
message( STATUS "\n\n-----------------------VCPKG_CMAKE_CONFIGURE_OPTIONS =
${VCPKG_CMAKE_CONFIGURE_OPTIONS}\n\n" )
message( STATUS "\n\n-----------------------FEATURES = ${FEATURES}\n\n" )
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev