拉撒路OSX狮子 “无法加载Oracle客户端库libociei.dylib”

问题描述:

拉撒路1.2.4(FPC 2.6.4) 的Oracle XE 11.2 Oracle即时客户端32位(基本& SQLPLUS)拉撒路OSX狮子 “无法加载Oracle客户端库libociei.dylib”

我已经能够使用设计器中的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设定为/库/ Oracle的环境变量

谁能告诉我为什么不能过上运行OSX连接拉撒路?

+0

它看起来像是32位,但它可能需要64位库吗?或者它正在重新定义'DYLD_LIBRARY_PATH'本身并覆盖您的设置?也有可能它正在寻找一个特定的路径,或期望它在应用程序自己的目录下,但现在只是猜测......看起来像'$ ORACLE_HOME'也应该是'/ Library/Oracle/instantclient_11_2',但这可能不相关。 –

+0

您可以像http://ronr.blogspot.nl/2013/02/oracle-client-11gr2-11203-for-apple-mac.html?q=instant+client中提到的那样进行安装吗?我不太确定你的ORACLE_HOME定义的效果。 –

+0

显然IDE使用与终端不同的shell。当我cd到应用程序路径并运行“打开OraTest.app”它的工作原理!当我在IDE中运行时调用ShowMessage(GetEnvironmentVariable('DYLD_LIBRARY_PATH'))时,它将返回一个空字符串。从终端它返回正确的路径。关于IDE使用什么shell的任何想法?我的直接解决方法是在终端中打开Lazarus.app。设计师按照这种方式进行广告宣传。 – kahlersd

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

我在Oracle和OS X没有见地,所以我只是尽量给一些指针:

AFAIK拉撒路代码只是试图dlopen的(“libociei.dylib”)。

所以,要么意味着

  • 它找不到它,因为LIB有一个不同的名称(我假定你检查这一点)
  • 它无法找到它由于路径问题(应该DYLD_LIBRARY_PATH没问题,但暂时尝试在全局设置它,以防产生的进程没有收到改变的env
  • 由于32位与64位或其他体系结构的原因,无法加载它
  • 它可以由于其他错误而无法加载它(缺少依赖关系,安全/权限)

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

尝试在LPR使用单位ocidyn然后

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

注意:如果从改变错误 “安装它?”到“它已经加载?”,你已经做了一件事,因为你至少加载了一次。我提到这一点是因为这种微妙的变化常常被忽视。

+0

谢谢,但没有奏效。看到我上面有关我发现的附加评论。 – kahlersd