拉撒路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连接拉撒路?
我的直接解决方法是在终端中打开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
注意:如果从改变错误 “安装它?”到“它已经加载?”,你已经做了一件事,因为你至少加载了一次。我提到这一点是因为这种微妙的变化常常被忽视。
谢谢,但没有奏效。看到我上面有关我发现的附加评论。 – kahlersd
它看起来像是32位,但它可能需要64位库吗?或者它正在重新定义'DYLD_LIBRARY_PATH'本身并覆盖您的设置?也有可能它正在寻找一个特定的路径,或期望它在应用程序自己的目录下,但现在只是猜测......看起来像'$ ORACLE_HOME'也应该是'/ Library/Oracle/instantclient_11_2',但这可能不相关。 –
您可以像http://ronr.blogspot.nl/2013/02/oracle-client-11gr2-11203-for-apple-mac.html?q=instant+client中提到的那样进行安装吗?我不太确定你的ORACLE_HOME定义的效果。 –
显然IDE使用与终端不同的shell。当我cd到应用程序路径并运行“打开OraTest.app”它的工作原理!当我在IDE中运行时调用ShowMessage(GetEnvironmentVariable('DYLD_LIBRARY_PATH'))时,它将返回一个空字符串。从终端它返回正确的路径。关于IDE使用什么shell的任何想法?我的直接解决方法是在终端中打开Lazarus.app。设计师按照这种方式进行广告宣传。 – kahlersd