2014-09-24 2 views
1

Я бегу в проблему с компиляции библиотеки GDAL 1.11.0 следующие руководства здесь: http://trac.osgeo.org/gdal/wiki/BuildingOnWindowsнеразрешенный внешний символ при компиляции GDAL 1.11.0 на окнах

я в состоянии запустить nmake /f makefile.vc MSVC_VER=1800 WIN64=YES но при выполнении установки он терпит неудачу с следующие erros:

Creating library gdal_i.lib and object gdal_i.exp 
LINK : error LNK2001: unresolved external symbol _OGRFeatureStylePuller 
LINK : error LNK2001: unresolved external symbol _OSRValidate 
LINK : error LNK2001: unresolved external symbol _OPTGetProjectionMethods 
LINK : error LNK2001: unresolved external symbol _OGR_G_GetPointCount 
LINK : error LNK2001: unresolved external symbol _OGRRegisterAll 
LINK : error LNK2001: unresolved external symbol [email protected] 
LINK : error LNK2001: unresolved external symbol [email protected] 
LINK : error LNK2001: unresolved external symbol [email protected] 
LINK : error LNK2001: unresolved external symbol [email protected] 
LINK : error LNK2001: unresolved external symbol _OCTNewCoordinateTransformation 
@8 
gdal111.dll : fatal error LNK1120: 10 unresolved externals 
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0 
\VC\BIN\amd64\link.EXE"' : return code '0x460' 
Stop. 

это то, что я могу сделать что-нибудь или что-то Thats сломана в источнике скачанного из http://trac.osgeo.org/gdal/wiki/DownloadSource

ответ

1

оказалось, что аргументы не могут быть переданы с ommand и необходимо изменить в файле конфигурации.

+1

Привет! У меня такая же проблема, как и вы. Какие аргументы вы имеете в виду и где находится файл конфигурации, который я должен изменить, и что мне нужно изменить? – Selphiron

+0

«Есть много вариантов, которые можно настроить вручную в файле nmake.opt в корневом каталоге GDAL». из окна здания doc. –

+1

Теперь я использую gisinternal build вместо того, чтобы строить свое «я». –

0

Вы можете передать дополнительные аргументы в сборку, раскомментируя части файла nmake.opt. Следующие команды работали для меня после вызова пакетного файла, расположенного на

"C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \"

с vcvarsall.bat amd64

nmake /f makefile.vc MSVC_VER=1800 WIN64=yes 
nmake /f makefile.vc install MSVC_VER=1800 WIN64=yes  
nmake /f makefile.vc devinstall MSVC_VER=1800 WIN64=yes 
2

Ответ предоставленный Полом, неверен. Я, наконец, найти способ, чтобы исправить эту проблему:

  1. Найти в nmake.opt файл в домашней папке GDAL, открыть его и искать определение «SYM_PREFIX». Затем измените «SYM_PREFIX = _» на «SYM_PREFIX =» (удалите подчеркивание).

  2. Найдите файл makefile.vc в домашней папке GDAL, откройте его и выполните поиск первого определения «BASE_INCLUDE» (другое определение находится чуть ниже него, не меняйте неправильный). Изменение от BASE_INCLUDE = /INCLUDE:[email protected]/ /INCLUDE:[email protected]/ /INCLUDE:[email protected]/ /INCLUDE:[email protected]/ /INCLUDE:[email protected] $(VB6_SAFEARRAYSYM) до: BASE_INCLUDE = /INCLUDE:$(SYM_PREFIX)GDALSimpleImageWarp/ /INCLUDE:$(SYM_PREFIX)GDALReprojectImage/ /INCLUDE:$(SYM_PREFIX)GDALComputeMedianCutPCT/ /INCLUDE:$(SYM_PREFIX)GDALDitherRGB2PCT/ /INCLUDE:$(SYM_PREFIX)OCTNewCoordinateTransformation $(VB6_SAFEARRAYSYM) . Короче говоря, замените '_' на $ (SYM_PREFIX) и удалите '@number'.

Согласно некоторым web-страницам, данная проблема может быть вызвана изменением обработчика компилятора AMD64 vC++, не декорированных символами.

+0

Работал для меня, спасибо, что опубликовал это. –

0

У меня такая же проблема и после установки права MSVC_VER (шахта VS 2012), проблема решена.

NMake Команда:

nmake /f makefile.vc MSVC_VER=1800 WIN64=yes 

MSVC Версии:

MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008) 
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010) 
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012) 
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013) 
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) 
MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017)