2014-07-07 59 views
0

拉撒路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

回答

0

我的直接解決方法是在終端中打開Lazarus.app。設計師按照這種方式進行廣告宣傳。生成的.app可以從/ Applications中成功運行。

1

我在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