geos在win7 64win764位怎么安装装

QGIS2.3+VS2010+Win7编译
QGIS2.3+VS2010+Win7编译
[摘要:QGIS2.3.0民圆推举采纳VS2008举行编译,GUI应用Qt4.7.1-VS2008,剧本应用Python2.7.4。QGIS 插件包含CPP插件战Python插件两种,应用Qt4减载CPP插件,应用Python2减载Python插件,有些Python插件(比方pr]
QGIS2.3.0官方推荐采用VS2008进行编译,GUI使用Qt4.7.1-VS2008,脚本使用Python2.7.4。QGIS 插件包括CPP插件和Python插件两种,使用Qt4加载CPP插件,使用Python2加载Python插件,有些Python插件(例如processing插件)依赖于PyQt4,PyQt4依赖于Qt4-VS2008。QGIS的有些依赖库(例如Qwt5)依赖于Qt4-VS2008。
若采用VS2010直接进行编译,在调用QGIS的过程中会出现兼容性错误,例如加载processing插件时引起异常中断错误,导致程序崩溃。
安装Qt4.8.5-VS2010之后,采用VS2010进行编译,在调用QGIS的过程中依然出现兼容性错误,例如加载Qwt5依赖库时引起异常中断错误,导致程序崩溃。
因此,采用VS2010进行编译之前,需要将Qt4-VS2008更新为Qt4-VS2010版本,包括所有使用了Qt4-VS2008的插件和依赖库。
1、安装CMake 2.8
(1)下载地址:http://www.cmake.org/
(2)安装路径:自定义,例如:C:GNUCMake2.8
2、安装GNUWin32 flex 2.5和bison 2.4
(1)下载地址:http://gnuwin32.sourceforge.net/packages/flex.htm和.../bison.htm
(2)安装路径:自定义,例如:C:GNUGnuWin32
说明:Flex/Bison常用安装程序有两种:GnuWin32 Flex 2.5/Bison 2.4和Win flex-bison 2.5 (http://sourceforge.net/projects/winflexbison/),推荐安装GnuWin32Flex 2.5/Bison 2.4。
3、下载QGIS 2.3源代码
(1)下载地址:/qgis/QGIS
(2)解压路径:自定义,例如:C:qgis230-sourceQGIS-master
说明:源代码压缩包中提供了安装说明(QGIS-masterdocINSTALL.html)。
4、通过OSGeo4W Installer 32bit安装QGIS 2.3依赖库
(1)下载地址:https://trac.osgeo.org/osgeo4w/
(2)运行OSGeo4W,选择Advanced Install -& Install from Internet or Install from LocalDirectory –& Root Directory (Default: C:OSGeo4W) -& Select Packages: qgis-full-dev。
(3)缺省QGIS 2.3开发包(qgis-full-dev)未安装Qwt5开发包(Qwt5-devel-qt4)和Spatialindex开发包(libspatialindex-devel),需要单独安装这两个开发包。
说明:QGIS依赖库头文件位于C:OSGeo4Winclude路径下,静态库文件位于C:OSGeo4Wlib路径下,qmake.exe等工具位于C:OSGeo4Wbin路径下,外部可执行程序包位于C:OSGeo4Wapps路径下。
5、设置环境变量
(1)打开系统命令提示符,在控制台模式下设置环境变量中
(2)调用OSGeo4Wbino4w_env.bat批处理文件,将自动递归调用OSGeo4W etcini*.bat批处理文件,设置OSGeo4W运行环境变量,例如:
call &C:OSGeo4Wbino4w_env.bat&
其中用于CMake生成VS解决方案的变量包括:
OSGEO4W_ROOT=C:OSGeo4W
PATH=%OSGEO4W_ROOT%%PATH%
PYTHONHOME=%OSGEO4W_ROOT%appsPython27
PATH=%OSGEO4W_ROOT%appsPython27S%PATH%
说明:CMake使用PYTHONHOME查找SIP包所在路径。
(3)在环境变量INCLUDE和LIB中添加OSGeo4W依赖库头文件和静态库文件所在路径,或者在环境变量PATH中添加依赖库头文件和库文件所在路径。例如:
setINCLUDE=%OSGEO4W_ROOT%%INCLUDE%
set LIB=%OSGEO4W_ROOT%%LIB%
(4)定义GRASS_PREFIX,例如:
setGRASS_PREFIX=c:/OSGeo4W/apps/grass/grass-6.4.3
注意:在GRASS_PREFIX路径中不要使用’’代替’/’,否则CMake将产生错误。
(5)在环境变量PATH中添加添加GNUWin32 Flex/Bison可执行文件所在路径,例如;
set C:GNUGnuWin32bin
(6)在环境变量PATH中添加CMake可执行文件所在路径,例如:
C:GNUCMake2.8bin
(7)调用VS2010的VCvcvarsall.bat批处理文件,将自动递归调用VCbinvcvars32.bat和%VS100COMNTOOLS%vsvars32.bat批处理文件,例如:
call &C:Program FilesMicrosoftVisual Studio 10.0VCvcvarsall.bat& x86 或
call &C:Program Files (x86)MicrosoftVisual Studio 10.0VCvcvarsall.bat& x86
其中用于CMake生成VS解决方案的变量包括:
VS90COMNTOOLS =C:Program FilesMicrosoftVisual Studio 10.0Common7Tools或
VS90COMNTOOLS =C:Program Files (x86)MicrosoftVisual Studio 10.0Common7Tools
LIB=”C:Program FilesMicrosoftSDKsWindowsv7.0AL %LIB%;”或
LIB=”C:Program Files (x86)MicrosoftSDKsWindowsv7.0AL %LIB%;”
说明:CMake需要在环境变量PATH或LIB中查找Microsoft SDKs 的SetupAPI.Lib,找到后定义SETUPAPI_LIBRARY变量。
特别注意:系统环境变量PATH中路径之间分号的前后不要加空格,否则CMake解析路径时出现错误。
6、复制GNUWin32 Flex/Bison的unistd.h头文件
QGIS编译时需要GNUWin32Flex/Bison的unistd.h头文件,将GnuWin32includeunistd.h头文件复制到VCinclude路径下,例如:C:ProgramFilesMicrosoft Visual Studio 10.0VCinclude或C:Program Files(x86) Microsoft Visual Studio 10.0VCinclude。
说明:在环境变量INCLUDE或PATH中添加GNUWin32 Flex/Bison的unistd.h头文件所在路径,VS2010编译时仍然找不到unistd.h,因此必须复制该文件。
7、生成QGIS 2.3.0解决方案
(1)开cmake-gui应用程序;
(2)在where is the source code中输入源代码根路径,例如:D:/dev_qgis/qgis230-source/QGIS-master;
(3)在where to build the binaries中输入编译根路径,例如:D:/dev_qgis/qgis-source230/build;
(4)选中Grouped复选框,按分组显示列表,使用默认选项。
(5)点击Configure按钮,选择Visual Studio 10,应该顺利通过;
(6)点击Generate按钮,生成qgis2.3.0.sln解决方案。
说明:可以采用基本编译选项,打开With组,仅选中WITH_DESKTOP, WITH_INTERNAL_HTTPLIB, WITH_INTERNAL_QEXTSERIALPORT,WITH_ INTERNAL_QWTPOLAR。
8、编译QGIS 2.3.0解决方案
(1)通过VS2010打开qgis2.3.0.sln解决方案
(2)将解决方案配置由Debug改为RelWithDebInfo (Release with Debug Info)
(3)编译默认解决方案
说明:由于OSGeo4W仅提供了release依赖库,RelWithDebInfo配置使用release依赖库,还保留了调试信息,可以调试QGIS,推荐采用该配置。
问题1:CMake生成QGIS解决方案时,找不到flex
分析原因:在QGIS-masterCMakeLists.txt中通过 INCLUDE(Flex)调用QGIS-mastercmake Flex.cmake 模块,在 Flex.cmake 中通过FIND_PROGRAM命令查找flex.exe可执行文件所在目录:
&&&FIND_PROGRAM(FLEX_EXECUTABLE
&&&&&&&&NAMES flex.exe
&&&&&&& PATHS$ENV{LIB_DIR}/bin c:/cygwin/bin $ENV{PROGRAMFILES}/GnuWin32/bin)
由于未在环境变量PATH指定flex所在路径,所以找不到flex。
解决方法:在环境变量PATH添加flex所在路径,例如:
set PATH=C:GNUGnuWin32%PATH%
问题2:CMake生成QGIS解决方案时,找不到bison
分析原因:在QGIS-masterCMakeLists.txt中,过 INCLUDE(Bison)调用QGIS-mastercmake Bison.cmake模块,在Bison.cmake中通过FIND_PROGRAM命令查找bison.exe可执行文件所在目录:
&FIND_PROGRAM(BISON_EXECUTABLE PATHS
&&&&&NAMES bison.exe
&&&&&PATHS $ENV{LIB_DIR}/bin c:/cygwin/bin $ENV{PROGRAMFILES}/GnuWin32/bin
由于未在环境变量PATH指定bison所在路径,所以找不到bison。
解决方法:在环境变量PATH添加bison所在路径,例如:
set PATH=C:GNUGnuWin32%PATH%
问题3:CMake生成QGIS解决方案时,未定义GEOS_INCLUDE_DIR和GEOS_LIBRARY
分析原因:在QGIS-masterCMakeLists.txt中通过FIND_PACKAGE(GEOS)调用QGIS-master cmake FindGEOS.cmake模块,在FindGEOS.cmake中通过FIND_PATH命令查找GEOS头文件,通过和FIND_LIBRARY命令查找GEOS库文件:
& IF(MSVC)
&&&FIND_PATH(GEOS_INCLUDE_DIR geos_c.h $ENV{LIB_DIR}/include $ENV{INCLUDE})
&&&FIND_LIBRARY(GEOS_LIBRARY NAMES geos geos_c_i geos_c PATHS
&&&&&&$ENV{LIB_DIR}/lib&
&&&&&$ENV{LIB})
&ENDIF (MSVC)
遍历CMake缺省路径和PATHS指定路径,并将结果保存到GEOS_INCLUDE_DIR和GEOS_LIBRARY中。
由于未在环境变量PATH中添加依赖库头文件和库文件所在路径,导致找不到GEOS库。
解决方法1:在环境变量INCLUDE和LIB中添加OSGeo4W依赖库所在路径,例如:
set OSGEO4W_ROOT=C:OSGeo4W
setINCLUDE=%OSGEO4W_ROOT%%INCLUDE%
set LIB=%OSGEO4W_ROOT%%LIB%
解决方法2:在环境变量PATH中添加OSGeo4W依赖库所在路径,例如:
set PATH=%OSGEO4W_ROOT%%PATH%
set PATH=%OSGEO4W_ROOT%%PATH%
问题4:CMake生成QGIS解决方案时,找不到PYTHON_EXECUTABLE
分析原因:在QGIS-masterCMakeLists.txt中通过FIND_PACKAGE(PythonInterpREQUIRED)调用CMake的FindPythonInterp.cmake模块,在FindPythonInterp.cmake中通过find_program命令查找Python可执行文件:
find_program(PYTHON_EXECUTABLE NAMES${_Python_NAMES})
解决方法:在环境变量PATH添加python.exe所在路径,例如:
set PATH=%OSGEO4W_ROOT%%PATH%
注意:当系统中安装了两个版本Python时,假设由OSGeo4W安装了Python2.7.4,由其他程序安装了Python 2.7.2,若环境变量PATH中设置了Python 2.7.2安装路径,可能导致异常问题。建议:从环境变量PATH中删除其他版本Python所在路径,例如:C:Python27; C:Python27Scripts。
问题5:CMake生成QGIS解决方案时,找不到SIP
分析原因:在QGIS-masterCMakeLists.txt中,如果定义了WITH_BINDINGS,将通过FIND_PACKAGE(SIPREQUIRED)命令调用QGIS-mastercmake FindSIP.cmake模块,该模块通过EXECUTE_PROCESS(COMMAND${PYTHON_EXECUTABLE} ${_find_sip_py} OUTPUT_VARIABLE sip_config)命令调用python.exe来运行QGIS-mastercmakeFindSIP.py,在FindSIP.py中需要导入sipconfig包,查找sipconfig包时需要使用PYTHONHOME变量,由于未定义该变量而导致找不到SIP。
解决方法:定义环境变量PYTHONHOME,例如:
set PYTHONHOME=%OSGEO4W_ROOT%appsPython27
注意:不需要在环境变量PATH中添加Python安装路径。
问题6:CMake生成QGIS解决方案时,未定义QWT_INCLUDE_DIR和QWT_LIBRARY
分析原因:QGIS-masterCMakeLists.txt中通过FIND_PACKAGE(QwtREQUIRED) 加载并运行QGIS-mastercmake FindQwt.cmake模块,在FindQwt.cmake中通过FIND_PATH命令查找Qwt头文件,通过FIND_LIBRARY命令查找库文件:
&&&FIND_PATH(QWT_INCLUDE_DIR NAMES qwt.h PATHS
&&&&&&&/usr/include
&&&&&&&/usr/local/include
&&&&&&&&$ENV{LIB_DIR}/include&
&&&&&&&&$ENV{INCLUDE}&
&&&&&&&PATH_SUFFIXES qwt-qt4 qwt qwt5 qwt6)
&&&FIND_LIBRARY(QWT_LIBRARY NAMES qwt qwt5 qwt6 qwt-qt4 qwt5-qt4 PATHS
&&&&&&&/usr/lib
&&&&&&&/usr/local/lib
&&&&&&&&$ENV{LIB_DIR}/lib&
&&&&&&&&$ENV{LIB}& )
遍历CMake缺省路径和PATHS指定路径,并将结果保存到QWT_INCLUDE_DIR和QWT_LIBRARY中。
解决方法1:确保安装了Qwt开发包。
解决方法2:在环境变量INCLUDE和LIB中添加Qwt的头文件和库文件所在路径。
问题7:CMake生成QGIS解决方案时,未定义SPATIALINDEX_INCLUDE_DIR和SPATIALINDEX_LIBRARY
分析原因:QGIS-mastersrccoreCMakeLists.txt中通过FIND_PACKAGE(SpatialindexREQUIRED)调用FindSpatialindex.cmake模块,在FindSpatialindex.cmake中通过FIND_LIBRARY查找Spatialindex库文件:
FIND_LIBRARY(SPATIALINDEX_LIBRARY NAMES spatialindex_i spatialindexPATHS
& /usr/lib
&&&&&&&/usr/local/lib
&&$ENV{LIB_DIR}/lib&
& &$ENV{LIB}/lib&
&&$ENV{OSGEO4W_ROOT}/lib&)
编译64位QGIS时,使用了spatialindex-64.lib库,因此找不到spatialindex-64.lib库。
解决方法1:确保安装了Spatialindex开发包。
解决方法2:在环境变量INCLUDE和LIB中添加Spatialindex的头文件和库文件所在路径。
解决方法3:在CMake_gui中手工添加spatialindex-64.lib所在路径。
问题8:CMake生成QGIS解决方案时,找不到Qt4
分析原因:在QGIS-mastersrccoreCMakeLists.txt中通过FIND_PACKAGE(Qt4${QT_MIN_VERSION} REQUIRED)调用CMake安装路径sharecmake-2.8ModulesFindQt.cmake模块,查找Qt 4.7.x以上版本,由于未在环境变量PATH中设置C:GNUOSGeo4Wbin路径,找不到qmake.exe,最终导致找不到Qt4。
解决方法:在环境变量PATH中添加OSGeo4W的可执行程序所在路径(bin)。
问题9:CMake生成QGIS解决方案时,未定义SETUPAPI_LIBRARY
分析原因:在QGIS-mastersrccoreCMakeLists.txt中通过FIND_LIBRARY(SETUPAPI_LIBRARYNAMES setupapi PATHS $ENV{LIB})查找setupapi库文件。由于未在环境变量PATH中添加Microsoft SDKs库文件所在路径,导致找不到SetupAPI.Lib。
解决方法1:在环境变量LIB或PATH中添加SetupAPI.Lib所在路径,例如:
set PATH= “C:Program FilesMicrosoftSDKsWindowsv7.0AL%PATH%” 或
set PATH= “C:Program Files (x86)MicrosoftSDKsWindowsv7.0AL%PATH%” 或
解决方法2:调用VC变量定义批处理文件,例如:
call &C:Program FilesMicrosoftVisual Studio 10.0VCvcvarsall.bat& x86 或
call &C:Program Files (x86)MicrosoftVisual Studio 10.0VCvcvarsall.bat& x86
问题10:CMake生成QGIS解决方案时,定义了GRASS_PREFIX,FindGRASS.cmake错误
分析原因:QGIS-masterCMakeLists.txt中通过FIND_PACKAGE(GRASS)加载并运行QGIS-mastercmake FindGRASS.cmake模块,在FindGRASS.cmake中通过FIND_PATH命令查找GRASS头文件:
SET (GRASS_PATHS ${GRASS_PREFIX}/usr/lib/grass /usr/lib64/grass64 /usr/lib/grass64 c:/msys/local /opt/grass$ENV{GRASS_PREFIX})
IF (WITH_GRASS)
&FOREACH (G_PREFIX ${GRASS_PATHS})
&&&IF (NOT GRASS_FOUND)
&&&&&CHECK_GRASS(${G_PREFIX})
&&&ENDIF (NOT GRASS_FOUND)
&ENDFOREACH (G_PREFIX)
ENDIF (WITH_GRASS)
&MACRO (CHECK_GRASS G_PREFIX)
&FIND_PATH (GRASS_INCLUDE_DIR grass/version.h ${G_PREFIX}/include)
ENDMACRO (CHECK_GRASS)
遍历GRASS_PATHS指定路径,并将结果保存到GRASS_INCLUDE_DIR中。
由于GRASS_PREFIX路径中包含’/’,导致CMake出现错误。
解决方法1:确保安装了GRASS开发包。
解决方法2:将GRASS_PREFIX中’’手工替换为‘/’。
问题11:CMake生成QGIS解决方案时,安装了Win flex-bison,找不到flex路径
分析原因:在QGIS-masterCMakeLists.txt中通过 INCLUDE(Flex)调用QGIS-mastercmake Flex.cmake 模块,在 Flex.cmake 中通过FIND_PROGRAM命令查找flex.exe可执行文件所在目录:
&&&FIND_PROGRAM(FLEX_EXECUTABLE
&&&&&&&&NAMES flex.exe
&&&&&&& PATHS$ENV{LIB_DIR}/bin c:/cygwin/bin $ENV{PROGRAMFILES}/GnuWin32/bin)
由于win_flex_bison-2.5.1使用了win_flex.exe文件名,导致无法找到flex.exe所在路径。
解决方法:建议在CMake_gui中手工添加win_flex.exe所在路径。
问题12:CMake生成QGIS解决方案时,安装了Win flex-bison,找不到bison路径
分析原因:在QGIS-masterCMakeLists.txt中,过 INCLUDE(Bison)调用QGIS-mastercmake Bison.cmake模块,在Bison.cmake中通过FIND_PROGRAM命令查找bison.exe可执行文件所在目录:
&FIND_PROGRAM(BISON_EXECUTABLE PATHS
&&&&& NAMES bison.exe
&&&&& PATHS $ENV{LIB_DIR}/binc:/cygwin/bin $ENV{PROGRAMFILES}/GnuWin32/bin
由于win_flex_bison-2.5.1使用了win_bison.exe文件名,导致无法找到bison.exe所在路径。
解决方法:建议在CMake_gui中手工添加win_flex.exe所在路径。
问题13:编译QGIS时,找不到unistd.h
分析原因:在QGIS-mastercmakeFlex.cmake 模块中定义宏MACRO(ADD_FLEX_FILES _sources ),在QGIS-mastersrccoreCMakeLists.txt中通过宏ADD_FLEX_FILES(QGIS_CORE_SRCSqgsexpressionlexer.ll)生成buildsrccoreflex_qgsexpressionlexer.cpp文件,在flex_qgsexpressionlexer.cpp中调用#include&unistd.h&头文件,Windows系统不自带该文件。
解决方法:将unistd.h复制到VSinclude路径下。
问题14:编译QGIS时,errorC2487: “FieldIndexRole”: dll 接口类成员可能不与 dll接口一起声明
分析原因:在qgis-mastersrcguiqgsfieldmodel.h中定义了类_declspec(dllexport)QgsFieldModel,类中定义静态成员变量FieldNameRole和FieldIndexRole在一行中导致错误,这是Micorsoft产品的一个缺陷 (/kb/127900/zh-cn):
class&GUI_EXPORT QgsFieldModel :&publicQAbstractItemModel
&&&&static&const&int&FieldNameRole, FieldIndexR
解决方法:将每个静态变量声明移到自己的行中,即:
class&GUI_EXPORT QgsFieldModel :&publicQAbstractItemModel
&&&&static const&intFieldNameR
&&&&static&const&int&FieldIndexR
问题15:编译QGIS时,errorC3861: “finite”: 找不到标识符
分析原因:在QGIS-mastersrccorepalfeature.cpp中调用了Linux /Unix函数finite(),而Windows中类似函数为_finite()。
&&& assert(finite( lx ) && finite( ly ) );
finite()函数语法:intfinite(double value);
如果value既不是无穷大/无穷小,也不是非数字,则返回非零值,否则返回0。
解决方法:修改为Windows中_finite()函数。
问题16:编译qgispython工程DEBUG版本时,出现 errorLNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(qgispython.obj和qgspythonutilsimpl.obj)
分析原因:在QGIS-mastersrcpythonqgspythonutilsimpl.cpp文件中,取消了_DEBUG定义:
#ifdef&_MSC_VER
#ifdef&_DEBUG
#undef&_DEBUG
在QGIS-mastersrcpythonqgispython.cpp文件中,未取消_DEBUG定义,因此,导致两个文件的DEBUG版本不匹配。
解决方法1:在qgispython.cpp文件中,取消_DEBUG定义。
解决方法2:在qgspythonutilsimpl.cpp文件中,不取消_DEBUG定义,可能会引起其它问题。
问题17:编译qgispython工程DEBUG版本时,出现error LNK1104: 无法打开文件“python27_d.lib”
分析原因:qgspython依赖于python 2.7的库文件,在pyconfig.h文件中定义DEBUG链编时使用python27.lib库,RELEASE链编时使用python27_d.lib库。
#&&&&&& if&defined(_MSC_VER)
&&&&&&&&&&&&/* So MSVC users need not specify the .lib file in
&&&&&&&&&&& theirMakefile (other compilers are generally
&&&&&&&&&&& takencare of by distutils.) */
#&&&&&&&&&& ifdef&_DEBUG
#&&&&&&&&&&&&&& pragma&comment(lib,&python27_d.lib&)
#&&&&&&&&&& else
#&&&&&&&&&&&&&& pragma&comment(lib,&python27.lib&)
#&&&&&&&&&& endif&/* _DEBUG */
#&&&&&& endif&/* _MSC_VER */
解决方法1:在qgspython工程中取消_DEBUG定义。
解决方法2:修改pyconfig.h文件,将_DEBUG中链接库改为python27.lib,可能会引起其它问题。
说明:编译python_module_qgis_analysis, python_module_qgis_core, python_module_qgis_gui,python_module_qgis_networkanalysis工程时,出现error LNK1104: 无法打开文件“python27_d.lib”,解决方法同上。
问题18:调试QGIS时,通过qgspython.dll加载python27.dll失败
分析原因:通过Depends工具查看QGIS的依赖库(或者在调试状态下查看自动加载的依赖库),发现加载了系统路径下的Python动态库(例如C:WindowsSystem32python27.dll,版本2.7.2),未加载开发环境中的Python动态库(例如C:GNUOSGeo4Wbinpython27.dll,版本2.7.4),而两个Python动态库的版本不一致,导致加载失败。
解决方法1:将系统路径下Python动态库移到其他路径下。
解决方法2:使用开发环境中Python动态库覆盖系统路径下Python动态库。
问题19:调试QGIS时,加载qgis.core模块失败:无法载入PyQGIS,Python支持将被禁用
分析原因:QGIS未生成qgis.core模块
解决方法:QGIS通过python_module_qgis_core工程生成qgis.core模块,例如D:dev_qgisqgis-source230buildoutputpythonqgiscore.pyd。
问题20:在Python中加载qgis.core模块出现错误:ImportError: No module named qgis.core
分析原因:qgis.core模块不在Python搜索路径中,qgis.core模块是…qgiscore.pyd文件。
解决方法1:定义PYTHONPATH变量保存qgis.core模块所在路径,例如:D:dev_qgisqgis-source230buildoutputpython
注意:必须定义PYTHONPATH变量,不需要在PATH变量中添加qgis.core模块所在路径。
问题21:在Python中加载qgis.core模块出现错误:ImpotError: DLL load failed
分析原因:通过Depends工具查看…qgiscore.pyd的依赖库,发现需要调用qgis_core.dll动态库。
解决方法:在系统PATH变量中添加qgis_core.dll动态库所在路径例如:D:dev_qgisqgis-source230buildoutputbinRelWithDebInfo
注意:必须在PATH变量中添加,不需要在PYTHONPATH变量中添加qgis_core.dll动态库所在路径。
问题22:无法启动应用程序qgis.exe
详细错误信息:由于应用程序配置不正确,未能启动此应用程序。请查看清单文件以查找可能的错误。重新安装该应用程序可能修复此问题。有关更多信息,请参见应用程序事件日志。
分析原因:打开Windows的“事件查看器”,在“Windows日志”-&“应用程序”中查看qgis.exe引起的详细错误信息:
qgis.exe的激活上下文生成失败。 找不到从属程序集Microsoft.VC90.DebugCRT,processorArchitecture=&x86&,publicKeyToken=&1fc8b3b9a1e18e3b&,type=&win32&,version=&9.0.21022.8&。 请使用 sxstrace.exe 进行详细诊断。
分析发现qgis.exe编译时需要链接Qt的QtUiToolsd.lib库,该库运行时需要调用VS2008的调试版运行库(Microsoft.VC90.DebugCRT),而VS2008可再发行组件包不包含调试版运行库,因此出现错误。
解决方法1:通过OSGeo卸载Qt 4模块,安装Qt 4 SDKfor VS2010开发包(可选安装Visual Studio Add-in 1.1.11 for Qt4插件),通过CMake重新生成VS2010解决方案。
解决方法2:打开qgis项目属性 -& 配置属性 -& 链接器 -& 输入 -& 附加依赖项,将Qt 4 Debug版依赖库修改为Release版依赖库。
解决方法3:安装VS2008开发环境,仅用于提供调试版运行库,还是使用VS2010开发。
解决方法4:不再使用VS2010开发,而是采用VS2008开发。
说明:对于VS2008和VS2010混合编程,存在的隐患比较多,不推荐。
问题23:将Qgis设为启动项目,debug调试时直接退出
分析原因:调试跟踪到srcappgpsqgsgpsinformationwidget.cpp中语句时直接退出:
mpPlot =&new&QwtPlot( mpHistogramWidget );
QwtPlot是Qwt5中的类,Qwt5需要调用Qt4-VS2008,由于Qt4-VS2008版与Qt4-VS2010版之间存在兼容性问题,引起异常中断直接退出。
解决方法:通过VS2010重新生成Qwt5,依赖于Qt4-VS2010版。
问题24:QGIS调试时,无法定位程序输入点于动态链接库QtGui4.dll上
分析原因:QGIS加载Python模块console和processing时,需要调用PyQt4,PyQt4依赖于Qt4-VS2008,在VS2010开发环境中调用Qt4-VS2008动态库时引起异常中断错误。
解决方法:采用VS2010重新生成PyQt4,依赖于Qt-VS2010。
编译警告:C4702 无法访问的代码
使用Notepad++ 6.5 打开引起警告的文件,通过格式菜单,将UTF-8无BOM格式编码转为UTF-8格式编码,重新编译。
注意:安装路径最好不要有空格或中文。
说明1:Flex是语法扫描器,用于解析文本生成代码;Bison是语法分析器,用于把上下文无关文法描述转换为可做语法分析的C或C++程序。Flex扫描器经常使用Bison定义的语法,Flex生成代码时使用Bison生成的头文件。
说明2:CMake 2.8中包含FindFLEX.cmake模块和FindBISON.cmake模块(位于C:GNUCMake2.8sharecmake-2.8Modules),用于查找Flex可执行程序 (flex.exe或win_flex.exe)和Bison可执行程序(bison.exe或win_bison.exe),但是QGIS未使用这两个模块,而是自定义Flex.cmake 模块和Bison.cmake模块(位于QGIS-mastercmake)来查找flex.exe和bison.exe。
说明3:MS2010中MFC静态编译设置:项目属性 -& 配置属性 –& 常规–& MFC的使用&设置为在静态库中使用MFC;运行库编译设置:项目属性 -& 配置属性 -& C/C++-& 代码生成 -& 运行库设置为多线程(/MT)或多线程调试(/MTd)。
感谢关注 Ithao123C/c++频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊

我要回帖

更多关于 win7 64位怎么安装 的文章

 

随机推荐