[英]Linker Error Building GDAL
我正在使用MSVC 2015 64位命令提示符從源代碼構建GDAL。 我正在使用Windows 8.部分通過構建,我收到以下錯誤:
Creating library gdal_i.lib and object gdal_i.exp
odbccp32.lib(dllload.obj) : error LNK2019: unresolved external symbol _vsnwprintf_s referenced in function StringCchPrintfW
gdal201.dll : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.EXE"' : return code '0x460'
Stop.
我已閱讀Microsoft網站和GDAL Git問題部分,這是2014年MSVC和MSVC 2015預發布版本的問題,但該問題應該在MSVC 2015最終版本之前得到解決。
我似乎並不是唯一有此問題的人,但我也沒有看到解決方案(除了恢復到舊版本的MSVC,如2013)。 有沒有人有幸使用MSVC 2015(64位)來構建GDAL?
我編輯了nmake.opt:
我換了第667行...:
!IFDEF ODBC_SUPPORTED
ODBCLIB = odbc32.lib odbccp32.lib user32.lib
!ENDIF
有:
!IFDEF ODBC_SUPPORTED
!IF $(MSVC_VER) < 1900
ODBCLIB = odbc32.lib odbccp32.lib user32.lib
!ELSE
ODBCLIB = legacy_stdio_definitions.lib odbc32.lib odbccp32.lib user32.lib
!ENDIF
!ENDIF
/安德斯
GDAL-2.1.0在nmake.opt上已經有類似的變化
!IFDEF ODBC_SUPPORTED
!IF $(MSVC_VER) >= 1900
# legacy_stdio_definitions.lib : https://connect.microsoft.com/VisualStudio/feedback/details/1134693/vs-2015-ctp-5-c-vsnwprintf-s-and-other-functions-are-not-exported-in-appcrt140-dll-breaking-linkage-of-static-libraries
ODBCLIB = legacy_stdio_definitions.lib odbc32.lib odbccp32.lib user32.lib
!ELSE
ODBCLIB = odbc32.lib odbccp32.lib user32.lib
!ENDIF
!ENDIF
但您還必須使用參數MSVC_VER從命令行指定Visual Studio版本。 例如,對於Visual Studio 2015(MSVC_VER == 1900),使用此命令行進行編譯
nmake -f makefile.vc MSVC_VER=1900
除了上述內容之外,我還必須對nmake.opt文件進行以下修改:
這條線說
!IFNDEF MSVC_VER
#assume msvc VS2008.
MSVC_VER=1500
!ENDIF
應改為:
!IFNDEF MSVC_VER
#assume msvc VS2015.
MSVC_VER=1900
!ENDIF
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.