Lazarus OSX Lion“无法加载Oracle客户端库libociei.dylib”(Lazarus OSX Lion “Can not load Oracle client library libociei.dylib”)

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连接?


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

I have been able to use the Lazarus TOracleConnection in the designer to connect on Windows 7 and CentOS Linux. When attempting to do the same in OSX Lion I get "Can not load Oracle client library libociei.dylib. Is it installed?" It is located in /Library/Oracle/instantclient_11_2.

I am able to connect and query via sqlplus on the Mac. Here is the contents of my .bash_profile (paths are accurate):

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 is set to /Library/Oracle in Environment Variables

Can anyone tell why can't I connect through Lazarus running on OSX?


原文:https://stackoverflow.com/questions/24616558
2021-12-03 18:12

满意答案

我在Oracle和OS X中都不知道,所以我只是试着给出一些指示:

Afaik拉撒路代码只是尝试dlopen('libociei.dylib')。

所以这意味着

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

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

    做一个

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

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


    My immediate workaround is to open Lazarus.app in Terminal. The designer works as advertised this way. The resulting .app can be run successfully from /Applications.

    相关问答

    更多

    MAC OSX dylib以及如何使用它们(MAC OSX dylib's and how to use them)

    正如moshbear上面评论的那样, dylib文件是在Mac OS X上打包共享库的方式。要使用这样的共享库,需要将两个开关传递给编译器-L和-l 。 第一个将包含dylib的目录添加到链接器的库搜索路径,第二个指定要链接的库。 这样的东西,对于一个位于/usr/mylibs的虚构的/usr/mylibs : clang code.c -L/usr/mylibs -lfoo As moshbear commented above, dylib files are how shared libr...

    OSX Lion上的Scrapy安装(Scrapy installation on OSX Lion)

    很明显,这可能是一个路径问题。 在我的Mac上,我使用了/usr/bin easy_install 。 sudo /usr/bin/easy_install scrapy 随后将生成的scrapy命令安装到/usr/local/bin/scrapy 。 您的路径中可能没有该目录,因此请查看以下情况是否属实: echo $PATH 如果它不在那里,你可以暂时添加它,比如export PATH=/usr/local/bin:$PATH ,或者修改你的~/.bash_profile以永久添加它。 或...

    Mac OS Lion中的Subclipse显示“无法加载默认SVN客户端”错误(Subclipse in Mac OS Lion shows “Unable to load default SVN client” error)

    您是否尝试从Subclipse的更新站点下载SVNKit ? 转到安装新软件并选择Subclipse更新站点。 选择JNA和SVNKit库以及SVNKit客户端适配器。 之后,在“ 首选项”→“团队”→“SVN→SVN接口”中将接口从JavaHL更改为SVNKit。 Have you tried downloading SVNKit from the update site of Subclipse? Go to Install New Software and select the Subcli...

    Couch DB安装不适用于Mac OSx Lion(Couch DB installation not working on Mac OSx Lion)

    UPDATE 我发现了如何解决问题: 你必须删除该文件 rm ~/Library/Caches/Homebrew/spidermonkey-1.8.5.tar.gz 并通过运行更新您的Homebrew brew update 你可能有git问题(我有)解决它通过运行重置所有本地自制程序更改 git reset --hard git clean -f -x -d 并运行 brew update 现在应该直接安装couchdb brew install couchdb (如果你正在运行LIO...

    Lazarus库使用Python中的ctypes for OSX(Lazarus library using ctypes in Python for OSX)

    Miniconda显然是64位版本的Python。 你的库是32位。 (i386的体系结构是32位的;你应该看到64位库的x86_64。)因此,Python正确地报告了“错误的体系结构”。 将库重新编译为64位二进制文件,然后重试。 Miniconda is evidently a 64-bit version of Python. Your library is 32 bits. (An architecture of i386 is 32-bit; you should see x86_64 ...

    OSX Mountain Lion上的Tesseract和dylib(Tesseract and dylib on OSX Mountain Lion)

    通过清理我的两个软件的安装并通过brew重新安装它们来完成。 请注意,如果存在某些链接问题,则必须执行brew link --overwrite tesseract来解决它们。 Done by cleaning my installation of both the softwares and re-installing them through brew. Mind that if there is some linking problem, you have to execute brew l...

    Mac OSX中的sftp选项卡完成(Lion)(sftp tab completion in Mac OSX (Lion))

    似乎问题已在最新的MacPorts版本的yafc中得到解决,请参阅此票证 。 It seems that the problem has been resolved in the latest MacPorts version of yafc, see this ticket.

    OSX Lion上的rpy2错误(rpy2 error on OSX Lion)

    Python绑定依赖于正在运行的R安装。 根据显示的文件路径,您提供的回溯必须来自您的源安装,并且没有找到R框架或库,如果由MacPorts安装,则不在该位置( /Library/Frameworks )。 您最好的选择是坚持使用完整的MacPorts解决方案。 这引发了您安装了哪个版本的rpy2绑定的问题。 目前,MacPorts显示了三个可用版本: py25-rpy2 , py26-rpy2和py27-rpy2 。 每个都安装在相应的MacPorts Python版本中。 因此,如果您安装了p...

    OSX加载dylib Lua模块(OSX Loading dylib Lua Module)

    无需更改解释器(前提是.dynlib是可加载的(按照Lua中的编程,第26章 ))。 在需要模块之前,您可以更改package.cpath以查找.dynlibs而不是.so的。 No need to change the interpreter (provided that the .dynlib is loadable (as per Programming in Lua, chapter 26 )). You can change the package.cpath to look for ....

    Lazarus OSX Lion“无法加载Oracle客户端库libociei.dylib”(Lazarus OSX Lion “Can not load Oracle client library libociei.dylib”)

    我在Oracle和OS X中都不知道,所以我只是试着给出一些指示: Afaik拉撒路代码只是尝试dlopen('libociei.dylib')。 所以这意味着 它找不到它,因为lib有不同的名称(我假设你检查了这个) 由于路径问题,它无法找到它(DYLD_LIBRARY_PATH应该没问题,但是如果生成的进程没有收到更改的环境,则暂时尝试全局设置它 由于32位与64位或其他架构原因,它无法加载它。 由于其他错误,它无法加载它。 (缺少依赖项,安全性/权限) 可以尝试使用自定义路径直接初始化ora...

    相关文章

    更多

    自己工作之余做的OSX小软件

    ShareSDK是为iOS、Android、WindowsPhone提供社会功能的一个组件,开发者只需 ...

    Hadoop Could not load native gpl library异常解决

    Hadoop Could not load native gpl library异常解决 完整异常: ...

    解决Eclipse无法打开“Failed to load the JNI shared library”

    今天在刚买的笔记本上打开eclipse出现Failed to load the JNI shared ...

    oracle

    insert into TBL_Message(id,message,author,postTime) ...

    java server怎样和c++ client实现SSL通信??

    java keytool生成的证书是CRT等格式的,这种格式是2进制编码的,而C++用的证书格式是pe ...

    Oracle ORA-04031 错误 说明

    在 老熊 的Blog上看到他们写的有关ORA-04031的文章,转到blog。 老熊的Blog: ht ...

    Oracle ORA-04031 错误 说明

    在 老熊 的Blog上看到他们写的有关ORA-04031的文章,转到blog。 老熊的Blog: ht ...

    Oracle ORA-04031 错误 说明

    在 老熊 的Blog上看到他们写的有关ORA-04031的文章,转到blog。 老熊的Blog: ht ...

    Oracle ORA-04031 错误 说明

    在 老熊 的Blog上看到他们写的有关ORA-04031的文章,转到blog。 老熊的Blog: ht ...

    Oracle ORA-04031 错误 说明

    在 老熊 的Blog上看到他们写的有关ORA-04031的文章,转到blog。 老熊的Blog: ht ...

    最新问答

    更多

    将十六进制的字符串转换为字符串(Convert hex-encoded String to String)

    您希望将十六进制编码的数据用作AES密钥,但数据不是有效的UTF-8序列。 您可以将其解释为ISO Latin编码中的字符串,但AES(key: String, ...)初始化程序将该字符串转换回其UTF-8表示形式,也就是说,您将从开始时获得不同的关键数据。 所以你不应该把它转换成字符串。 使用 extension Data { init?(fromHexEncodedString string: String) } 方法从Swift中进行十六进制/二进制字符串转换,将十六进制编码的

    将friendly_id添加到用户模型后,登录后的友好转发不起作用(Friendly forwarding after login doesn't work after adding friendly_id to the user model)

    在应用程序控制器中,将redirect_back_or(path)方法更改为此方法。 def redirect_back_or(path) redirect_to session[:forwarding_url] || path session.delete(:forwarding_url) end 你有redirect_to request.referer之前负责将你重定向到最后一个url,即login_url。 我不知道为什么你要定义两个不同的方法

    Qt + VS2010:由于 .dll从您的计算机丢失,程序无法启动(Qt + VS2010: The program can't start because .dll is missing from your computer)

    您可能需要将有问题的DLL复制到您的可执行文件所在的文件夹中,或者确保DLL位于系统PATH中的文件夹中。 You likely need to copy the DLLs in question to the folder your executable is in, or ensure that the DLLs are located in a folder in the system's PATH.

    AutoFixture使用内部setter创建属性(AutoFixture create property with internal setter)

    理想情况下 ,测试不应该与类的internal成员交互,因为它们明确地从其公共API中排除 。 相反,这些成员将通过公共API启动的代码路径间接测试。 但是,如果在您的特定情况下这不可行,则可能的解决方法是从测试中明确地为内部属性赋值 。 您可以通过以下两种方式之一来实现: 通过使用InternalsVisibleTo属性将程序集中的所有内部成员公开给测试项目。 通过在特定接口中表示类的可修改状态并明确地实现它。 在您的示例中,选项1将是: // [assembly:InternalsVisib

    使用Trigger.IO/PhoneGap在UIWebView中使用focus()事件自动显示键盘(Show keyboard automatically with focus() event in UIWebView using Trigger.IO/PhoneGap)

    访问UIWebView不是我们在当前版本的插件中正确公开的东西(但我们很快就会支持)。 现在,如果您想尝试一下,可以添加 extern UIWebView *webView; 在插件文件的顶部,这将使您的API方法中的变量webView可用。 这将很快停止工作,所以我建议你现在只用它来测试一下。 2012年10月更新 : 该应用程序的Web视图现在通过ForgeApp : http : ForgeApp 例如: [ForgeApp sharedApp].webView Access to t

    ASP.NET MVC控件(ASP.NET MVC Control)

    您可以使用RadComboBox以及此处找到的此telerik社区项目提供的一些小调整。 应该在MVC中都能正常工作。 You can use the RadComboBox along with a little tweaking as provided for by this telerik community project, found here. Should all work fine in MVC.

    在后期保存上下文 - 将指针保存到上下文?(Saving Context At a Later Stage - Saving Pointer To Context ? Core Data)

    是的,您可以在循环后保存上下文。 它比每次迭代中的保存要好得多。 如果你看一下MagicalRecord src,你会看到MR_contextForCurrentThread总是为相同的线程返回相同的上下文,如果没有上下文的线程,MagicalRecord会创建它。 此外,您不需要传递上下文[_entityClass createInContext:context] ,只需要[_entityClass MR_createEntity] - 它将在当前线程的上下文中创建 Yes, you can

    tinyMce函数用于确定弹出窗口是否已打开(tinyMce function to determine if popup is already open)

    这是我要去的解决方案: 我似乎已经确认: - windowManager.open()不会像window.open()那样返回对窗口的引用 - windowManager没有内置方法来限制可以打开的实例数。 但它确实有一种方法可以将onClose函数添加到插件窗口:ed.windowManager.onClose.add(function(){alert('Closing!');}); 所以我将在onClick代码中使用一个变量来跟踪弹出窗口是否已被打开和关闭。 onClose函数将该变量标记为

    使用nil调用Document.find在mongodb中无效(Calling Document.find with nil is invalid in mongodb)

    OrderController #new调用OrderController#current_cart,它运行Cart.find(session [:cart_id])。 在会话开始时没有:cart_id,即session [:cart_id]为nil,你得到上面的Mongoid :: Errors :: InvalidFind异常。 请注意,当您正在抢救ActiveRecord :: RecordNotFound时,您的救援子句不会挽救该异常。 您正在使用Mongoid,而不是ActiveRec

    在函数中返回postgresql查询结果(Return postgresql query result in a function)

    假设您正在使用nodejs和pg模块。 正如您所说,由于查询功能是异步的,您无法直接将结果返回给调用者。 传统上,在nodejs中,调用者传递一个回调函数来处理结果或错误(如果有的话)。 在Kotlin中,这看起来像: client.query(MY_QUERY_TEMPLATE, params) { err, result -> if (err != null) { // do something with the error }