簡體   English   中英

鏈接器錯誤構建GDAL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM