Lazarus OSX Lion“无法加载Oracle客户端库libociei.dylib”

时间:2014-07-07 17:41:11

标签: macos oracle osx-lion lazarus

Lazarus 1.2.4(FPC 2.6.4) Oracle XE 11.2 Oracle Instant Client 32位(Basic& SqlPlus)

我已经能够在设计器中使用Lazarus TOracleConnection连接Windows 7和CentOS Linux。当尝试在OSX Lion中执行相同操作时,我得到“无法加载Oracle客户端库libociei.dylib。是否已安装?”它位于/ Library / Oracle / instantclient_11_2。

我可以通过Mac上的sqlplus进行连接和查询。这是我的.bash_profile的内容(路径是准确的):

DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Library/Oracle/instantclient_11_2
TNS_ADMIN=/Library/Oracle/instantclient_11_2/network/admin
PATH=$PATH:/Library/Oracle/instantclient_11_2
CLASSPATH=$CLASSPATH:$ORACLE_HOME

export DYLD_LIBRARY_PATH
export TNS_ADMIN
export PATH
export CLASSPATH

ORACLE_HOME在环境变量中设置为/ Library / Oracle

任何人都可以告诉我为什么不能通过在OSX上运行的Lazarus连接?

2 个答案:

答案 0 :(得分:1)

我在Oracle和OS X中都不知道,所以我只想提出一些建议:

Afaik lazarus代码只是尝试dlopen(' libociei.dylib')。

这意味着

  • 它无法找到它,因为lib有不同的名称(我假设你检查了这个)
  • 由于路径问题而无法找到它(DYLD_LIBRARY_PATH应该没问题,但是如果生成的进程没有收到更改的环境,则暂时尝试全局设置
  • 由于32位与64位或其他架构原因,它无法加载它。
  • 由于其他错误,它无法加载它。 (缺少依赖关系,安全/权限)

可以尝试使用自定义路径直接初始化oracle模块。

尝试在lpr中使用单位ocidyn然后

做一个

initialiseOCI('/your/whatever/path/libociei.dylib'); as first line in your .lpr

注意:如果错误从"更改,是否已安装?" to"它已经加载了?",你正在做某事,因为你设法加载它至少一次。我之所以提到这一点,是因为这种微妙的变化经常被忽视。

答案 1 :(得分:0)

我的直接解决方法是在终端中打开Lazarus.app。设计师按照这种方式做广告。生成的.app可以从/ Applications。

成功运行