执行ST_Geometry操作提示“ORA-06522: Unable to load symbol from DLL”

上次做实验,我的服务器中既安装了ArcSDE9.3又安装了ArcSDE9.3.1,而且由于测试另外一个问题,我又将ArcSDE9.3.1进行升级到SP2补丁,但是今天测试ST_Geometry的SQL操作,系统提示如下错误:

14:04:25 SQL> select sde.st_astext(t.shape) from AAA.streets t,AAA.str r where sde.st_intersects(t.shape,r.shape)=1;
ERROR:
ORA-29902: 执行 ODCIIndexStart() 例行程序中出错
ORA-06521: PL/SQL: 映射函数时出错
ORA-06522: Unable to load symbol from DLL
ORA-06512: 在 "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 943
ORA-06512: 在 "SDE.SPX_UTIL", line 2901
ORA-06512: 在 "SDE.SPX_UTIL", line 3146
ORA-06512: 在 "SDE.ST_DOMAIN_METHODS", line 291


从错误上看,加载的Dll不对,因为我们都知道执行ST_Geometry的SQL操作不仅仅是执行st_shapelib.dll,而且还有pe.dll和sg.dll,那么我的数据库中又安装了这么多数据库,还打了补丁,经过好几番折腾,我们发现ArcSDE9.3.1的相关dll版本的修改日期竟然是2008年的,这肯定有问题的,再检查ArcSDE9.3安装目录的dll发现是2010年的,晕,补丁位置打错了............


那么以后遇到类似情况,特别是在比较多的数据库中

我们要查看相关dll版本是否一致,而且是否和数据库的版本是否一致,这时候我们首先查看数据库的版本

C:\Users\Administrator>sqlplus sde/sde@orcl931

SQL*Plus: Release 11.2.0.1.0 Production on 星期二 2月 21 15:03:44 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from version;

     MAJOR      MINOR     BUGFIX
---------- ---------- ----------
DESCRIPTION
-------------------------------------------------------------------------------
   RELEASE SDESVR_REL_LOW
---------- --------------
         9          3          1
 for Oracle11g Build 3056 Fri Sep 10 09:41:17  2010

     93005          93001
时间为2010年9月10号

那么我们在往存储目录查看这三个dll的修改日期,这样才能保证版本的一致性


所以说我的这个问题的症结所在就是,我的库是2010年9月10日  ArcSDE9.3.1 SP2 的数据库,但是我引用的相关的ST_Geometry的dll(或者说读取user_libraries)里面的路径并不是这个时间的dll,所以出现这个问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误通常是在使用CMake构建工具时出现的,它表示在构建过程中找不到指定的头文件或库文件。 这个错误信息中提到了一个名为`tf2_geometry_msgs`的导入目标(Imported Target),它是在CMake中使用`find_package()`命令查找并导入的。`tf2_geometry_msgs`是ROS中的一个包,提供了将`geometry_msgs`消息类型与ROS变换系统(tf2)相互转换的方法。因此,这个错误可能是由于没有正确安装或配置ROS导致的。 解决这个问题的方法取决于具体情况。一般来说,可以尝试以下方法: 1. 确保已正确安装ROS,并且环境变量已经设置好。可以通过在终端中运行`roscore`命令来测试ROS是否正常工作。 2. 确认ROS包`tf2_geometry_msgs`已经被正确安装。可以在终端中运行`rospack find tf2_geometry_msgs`命令来查找该包的路径。 3. 如果`tf2_geometry_msgs`包已经安装,可以尝试在CMakeLists.txt文件中添加以下行: ```cmake find_package(tf2_geometry_msgs REQUIRED) ``` 这将告诉CMake在构建过程中查找并导入`tf2_geometry_msgs`包,并包含必要的头文件和库文件。 4. 如果以上方法都不能解决问题,可以尝试手动设置`tf2_geometry_msgs`包的路径。在CMakeLists.txt文件中添加以下行: ```cmake find_path(TF2_GEOMETRY_MSGS_INCLUDE_DIR tf2_geometry_msgs/... PATH_SUFFIXES include) find_library(TF2_GEOMETRY_MSGS_LIBRARY NAMES tf2_geometry_msgs) include_directories(${TF2_GEOMETRY_MSGS_INCLUDE_DIR}) target_link_libraries(your_target_name ${TF2_GEOMETRY_MSGS_LIBRARY}) ``` 这将手动查找`tf2_geometry_msgs`包的头文件和库文件,并将它们链接到你的目标文件中。 希望以上方法能够帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值