查看: 4074|回复: 24

关于编译geos这步的问题,新手求高手赐教

[复制链接]

该用户从未签到

发表于 2013-5-21 09:00:44 | 显示全部楼层 |阅读模式
编译时出错,提示如下
Build started: Project: geos_c, Configuration: Debug Win32 ------
Build started 2013/5/21 8:59:05.
InitializeBuildStatus:
  Creating "geos_c.dir\Debug\geos_c.unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
  Building Custom Rule E:/OSGEARTH/geos-3.3.1/capi/CMakeLists.txt
  CMake does not need to re-run because E:\OSGEARTH\geos-3.3.1\vs2010\capi\CMakeFiles\generate.stamp is up-to-date.
ClCompile:
  geos_c.cpp
  geos_ts_c.cpp
..\..\capi\geos_ts_c.cpp(5935): warning C4100: 'extHandle' : unreferenced formal parameter
LINK : fatal error LNK1104: cannot open file '..\lib\Debug\libgeos.lib'

Build FAILED.

该用户从未签到

 楼主| 发表于 2013-5-21 09:02:06 | 显示全部楼层
还有一处错误提示是:
Build started: Project: geos_unit, Configuration: Debug Win32 ------
Build started 2013/5/21 9:00:55.
InitializeBuildStatus:
  Creating "geos_unit.dir\Debug\geos_unit.unsuccessfulbuild" because "AlwaysCreate" was specified.
CustomBuild:
  Building Custom Rule E:/OSGEARTH/geos-3.3.1/tests/unit/CMakeLists.txt
  CMake does not need to re-run because E:\OSGEARTH\geos-3.3.1\vs2010\tests\unit\CMakeFiles\generate.stamp is up-to-date.
ClCompile:
  AngleTest.cpp
  computeOrientationTest.cpp
  isCCWTest.cpp
  isPointInRingTest.cpp
  signedAreaTest.cpp
  ConvexHullTest.cpp
  DiscreteHausdorffDistanceTest.cpp
  InteriorPointAreaTest.cpp
  PointLocatorTest.cpp
  RobustLineIntersectionTest.cpp
  RobustLineIntersectorTest.cpp
  GEOSBufferTest.cpp
  GEOSContainsTest.cpp
  GEOSCoordSeqTest.cpp
  GEOSGeomFromWKBTest.cpp
  GEOSGeomToWKTTest.cpp
  GEOSGeom_create.cpp
  GEOSGeom_extractUniquePointsTest.cpp
  GEOSIntersectsTest.cpp
  GEOSisValidDetailTest.cpp
  GEOSLineString_PointTest.cpp
  GEOSOffsetCurveTest.cpp
  GEOSOrientationIndex.cpp
  GEOSPolygonizer_getCutEdgesTest.cpp
  GEOSPreparedGeometryTest.cpp
  GEOSRelateBoundaryNodeRuleTest.cpp
  GEOSRelatePatternMatchTest.cpp
  GEOSSharedPathsTest.cpp
  GEOSSimplifyTest.cpp
  GEOSSnapTest.cpp
  GEOSUnaryUnionTest.cpp
  GEOSWithinTest.cpp
  CoordinateArraySequenceFactoryTest.cpp
  CoordinateArraySequenceTest.cpp
  CoordinateListTest.cpp
  CoordinateTest.cpp
  DimensionTest.cpp
  EnvelopeTest.cpp
  clone.cpp
  coversTest.cpp
  isRectangleTest.cpp
  GeometryFactoryTest.cpp
  IntersectionMatrixTest.cpp
  LinearRingTest.cpp
  LineSegmentTest.cpp
  LineStringTest.cpp
  LocationTest.cpp
  MultiLineStringTest.cpp
  MultiPointTest.cpp
  MultiPolygonTest.cpp
  PointTest.cpp
  PolygonTest.cpp
  PrecisionModelTest.cpp
  PreparedGeometryFactoryTest.cpp
  TriangleTest.cpp
  GeometryExtracterTest.cpp
  geos_unit.cpp
  DoubleBitsTest.cpp
  ByteOrderValuesTest.cpp
  WKBReaderTest.cpp
  WKBWriterTest.cpp
  WKTReaderTest.cpp
  WKTWriterTest.cpp
  LengthIndexedLineTest.cpp
  BasicSegmentStringTest.cpp
  NodedSegmentStringTest.cpp
  SegmentNodeTest.cpp
  SegmentPointComparatorTest.cpp
  BufferOpTest.cpp
  DistanceOpTest.cpp
  IsSimpleOpTest.cpp
  LineMergerTest.cpp
  LineSequencerTest.cpp
  GeometrySnapperTest.cpp
  LineStringSnapperTest.cpp
  FuzzyPointLocatorTest.cpp
  OffsetPointGeneratorTest.cpp
  OverlayResultValidatorTest.cpp
  SharedPathsOpTest.cpp
  CascadedPolygonUnionTest.cpp
  UnaryUnionOpTest.cpp
  IsValidTest.cpp
  ValidClosedRingTest.cpp
  ValidSelfTouchingRingFormingHoleTest.cpp
  SimpleGeometryPrecisionReducerTest.cpp
  DouglasPeuckerSimplifierTest.cpp
  TopologyPreservingSimplifierTest.cpp
  UniqueCoordinateArrayFilterTest.cpp
LINK : fatal error LNK1104: cannot open file '..\..\lib\Debug\geos_c.lib'

Build FAILED.

该用户从未签到

发表于 2013-5-21 09:11:09 | 显示全部楼层
LINK : fatal error LNK1104: cannot open file '..\lib\Debug\libgeos.lib'  
不知道CMake的有没问题

该用户从未签到

 楼主| 发表于 2013-5-21 09:24:04 | 显示全部楼层
liuzhiyu123 发表于 2013-5-21 09:11
LINK : fatal error LNK1104: cannot open file '..\lib\Debug\libgeos.lib'  
不知道CMake的有没问题

怎么看CMake有没有问题?
    个人感觉CMake没有问题,之前编译其他的都可以。

谢谢前辈

该用户从未签到

发表于 2013-5-21 10:08:20 | 显示全部楼层
这个我还真没试过 下载一个 试试

该用户从未签到

 楼主| 发表于 2013-5-21 11:14:20 | 显示全部楼层
liuzhiyu123 发表于 2013-5-21 10:08
这个我还真没试过 下载一个 试试

这个问题解决了,我在“批生成”时把debug和release一起编译,分开编译就可以了
还是谢谢前辈。。。。

该用户从未签到

发表于 2013-5-21 12:03:34 | 显示全部楼层
好吧,直接ALL_BUILD 就可以了

该用户从未签到

 楼主| 发表于 2013-5-21 19:41:22 | 显示全部楼层
liuzhiyu123 发表于 2013-5-21 12:03
好吧,直接ALL_BUILD 就可以了

我在编译成功以后,发现debug和release里的.lib文件和.dll文件是一样的,没有geosd.lib这样的文件。这是为什么?
我编译完成后改过里面的名字。

该用户从未签到

发表于 2013-5-22 08:04:57 | 显示全部楼层
wbweng 发表于 2013-5-21 19:41
我在编译成功以后,发现debug和release里的.lib文件和.dll文件是一样的,没有geosd.lib这样的文件。这是为 ...

可能是它的CMakeLists中没有添加那个设置debug模式下 添加d 的命令,可以自己添加

该用户从未签到

发表于 2013-5-27 18:38:11 来自手机 | 显示全部楼层
liuzhiyu123 发表于 2013-5-22 08:04
可能是它的CMakeLists中没有添加那个设置debug模式下 添加d 的命令,可以自己添加

默认是不编译d文件的,需要在编译选项里开启

该用户从未签到

发表于 2013-6-5 19:50:46 | 显示全部楼层
wbweng 发表于 2013-5-21 19:41
我在编译成功以后,发现debug和release里的.lib文件和.dll文件是一样的,没有geosd.lib这样的文件。这是为 ...

你好,你的osgearth配置是按什么说明配的?我第一次接触这个,按照网上说的一个很长的配置说明,结果编译osgearth.sln后,release里面没有文件,只哟debug有,不知道是怎么回事?你有没有遇过这样的问题?

该用户从未签到

发表于 2013-6-6 08:12:35 | 显示全部楼层
kevinfox18 发表于 2013-6-5 19:50
你好,你的osgearth配置是按什么说明配的?我第一次接触这个,按照网上说的一个很长的配置说明,结果编译 ...

分别选择 debug 和 release 编译 就可以了

该用户从未签到

发表于 2013-6-6 10:46:36 | 显示全部楼层
详细见我在教程区发的 osgearth编译文档,有geos这步。

该用户从未签到

发表于 2013-8-22 23:14:14 | 显示全部楼层
buaalb 发表于 2013-5-27 18:38
默认是不编译d文件的,需要在编译选项里开启

开启后,出现这样的错误:LINK : fatal error LNK1104: cannot open file '..\lib\Debug\libgeos.lib'    不知道怎么回事

该用户从未签到

发表于 2013-8-23 00:18:34 | 显示全部楼层
我也遇到相似的问题了。研究中。

该用户从未签到

发表于 2013-8-24 09:10:58 | 显示全部楼层
幻影天使 发表于 2013-8-23 00:18
我也遇到相似的问题了。研究中。

是在debug模式下出现的吗。如果是可能是因为你没有编译_d的lib库

该用户从未签到

发表于 2015-7-29 13:25:10 | 显示全部楼层
与前辈遇到类似的问题:“LINK : fatal error LNK1104: 无法打开文件“..\..\lib\Debug\osgEarthd.lib”
但是按前辈说的,debug模式和release模式分开编译,并没有解决问题。

在这之前还有一个问题:
2>------ 已启动生成: 项目: osgEarth, 配置: Debug Win32 ------
2>生成启动时间为 2015/7/29 13:21:16。
2>InitializeBuildStatus:
2>  正在对“osgEarth.dir\Debug\osgEarth.unsuccessfulbuild”执行 Touch 任务。
2>CustomBuild:
2>  所有输出均为最新。
2>ClCompile:
2>  Registry.cpp
2>G:\osgEarth\osgearth\src\osgEarth\Registry.cpp(575): error C2248: “osgDB::Registry::MimeTypeExtensionMap”: 无法访问 protected typedef(在“osgDB::Registry”类中声明)
2>          G:\osgEarth\OpenSceneGraph\include\osgDB/Registry(503) : 参见“osgDB::Registry::MimeTypeExtensionMap”的声明
2>          G:\osgEarth\OpenSceneGraph\include\osgDB/Registry(71) : 参见“osgDB::Registry”的声明
2>G:\osgEarth\osgearth\src\osgEarth\Registry.cpp(575): error C2039: “getMimeTypeExtensionMap”: 不是“osgDB::Registry”的成员
2>          G:\osgEarth\OpenSceneGraph\include\osgDB/Registry(71) : 参见“osgDB::Registry”的声明
2>G:\osgEarth\osgearth\src\osgEarth\Registry.cpp(576): error C2248: “osgDB::Registry::MimeTypeExtensionMap”: 无法访问 protected typedef(在“osgDB::Registry”类中声明)
2>          G:\osgEarth\OpenSceneGraph\include\osgDB/Registry(503) : 参见“osgDB::Registry::MimeTypeExtensionMap”的声明
2>          G:\osgEarth\OpenSceneGraph\include\osgDB/Registry(71) : 参见“osgDB::Registry”的声明
2>G:\osgEarth\osgearth\src\osgEarth\Registry.cpp(591): error C2248: “osgDB::Registry::MimeTypeExtensionMap”: 无法访问 protected typedef(在“osgDB::Registry”类中声明)
2>          G:\osgEarth\OpenSceneGraph\include\osgDB/Registry(503) : 参见“osgDB::Registry::MimeTypeExtensionMap”的声明
2>          G:\osgEarth\OpenSceneGraph\include\osgDB/Registry(71) : 参见“osgDB::Registry”的声明
2>G:\osgEarth\osgearth\src\osgEarth\Registry.cpp(591): error C2039: “getMimeTypeExtensionMap”: 不是“osgDB::Registry”的成员
2>          G:\osgEarth\OpenSceneGraph\include\osgDB/Registry(71) : 参见“osgDB::Registry”的声明
2>G:\osgEarth\osgearth\src\osgEarth\Registry.cpp(592): error C2248: “osgDB::Registry::MimeTypeExtensionMap”: 无法访问 protected typedef(在“osgDB::Registry”类中声明)
2>          G:\osgEarth\OpenSceneGraph\include\osgDB/Registry(503) : 参见“osgDB::Registry::MimeTypeExtensionMap”的声明
2>          G:\osgEarth\OpenSceneGraph\include\osgDB/Registry(71) : 参见“osgDB::Registry”的声明
2>
2>生成失败。

求前辈指点。

该用户从未签到

发表于 2015-9-10 08:16:19 | 显示全部楼层
怎么没有下文了,这个问题到底是怎样解决的呀,请各位高人指点迷津啊

该用户从未签到

发表于 2015-9-10 14:14:50 | 显示全部楼层
我编的是3。5
之前用的是静态库的geolib
后来在引用osgearth的时候有问题,就换成动态库了
不知你是怎么编译的
我是在命令行中用nmake -f makefile.vc命令编译的
希望能帮到你

该用户从未签到

发表于 2015-9-23 20:39:00 | 显示全部楼层
835700012 发表于 2015-9-10 14:14
我编的是3。5
之前用的是静态库的geolib
后来在引用osgearth的时候有问题,就换成动态库了

用命令行编译之后又geos.lib但没有geosd.lib怎么破?

该用户从未签到

发表于 2015-9-24 09:15:16 | 显示全部楼层
kookwangzheng 发表于 2015-9-23 20:39
用命令行编译之后又geos.lib但没有geosd.lib怎么破?

在cmake的时候不设置geoslib的debug版本就可以了

该用户从未签到

发表于 2015-9-24 09:57:44 | 显示全部楼层
835700012 发表于 2015-9-24 09:15
在cmake的时候不设置geoslib的debug版本就可以了

用了这两句,貌似已解决,多谢!
      nmake /f makefile.vc MSVC_VER=1800 WIN64=TRUE
      nmake /f makefile.vc MSVC_VER=1800 BUILD_DEBUG=YES WIN64=TRUE

该用户从未签到

发表于 2015-9-24 12:30:21 | 显示全部楼层
kookwangzheng 发表于 2015-9-24 09:57
用了这两句,貌似已解决,多谢!
      nmake /f makefile.vc MSVC_VER=1800 WIN64=TRUE
      nmake / ...

这样就是生成了debug版本的lib库和dll

该用户从未签到

发表于 2015-9-25 16:46:01 | 显示全部楼层
835700012 发表于 2015-9-24 12:30
这样就是生成了debug版本的lib库和dll

多谢!

该用户从未签到

发表于 2015-12-2 09:07:48 | 显示全部楼层
推荐直接使用osgEarth编辑器

编辑器下载地址:http://www.sxsim.com/h-col-106.html

sxearth2.0 截图4.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表