Delphi 2009,带有 Oracle 的 DbExpress:无法加载 oci.dll
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/427383/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Delphi 2009, DbExpress with Oracle : Unable to load oci.dll
提问by Fred
i've setup a demo to test datasnap 2009, and i've got a problem with dbexpress.
我已经设置了一个演示来测试 datasnap 2009,但我在使用 dbexpress 时遇到了问题。
The dbexpress error message, (same at design time or runtime) : "Cannot load oci.dll library (Error code 127). The OCI.dll library may be missing from the system path."
dbexpress 错误消息(在设计时或运行时相同):“无法加载 oci.dll 库(错误代码 127)。系统路径中可能缺少 OCI.dll 库。”
I'm using Oracle 8.0.5. The path to oci.dll (c:\orant\BIN) is in my system path, in front of the line. I've Delphi 2005 installed too and the exact same configuration just works fine. I've moved dbexpress delphi 2005 related files, i've rebooted many times, tried to copy oci.dll in c:\windows\system or c:\windows\system32\, everytime the same error.
我正在使用 Oracle 8.0.5。oci.dll (c:\orant\BIN) 的路径在我的系统路径中,在该行的前面。我也安装了 Delphi 2005,完全相同的配置也能正常工作。我已经移动了 dbexpress delphi 2005 相关文件,我已经重新启动了很多次,试图复制 c:\windows\system 或 c:\windows\system32\ 中的 oci.dll,每次都出现相同的错误。
I'm running out of solutions. Maybe it's a problem related with the fact i've got D2005 installed too... ?
我的解决方案快用完了。也许这是一个与我也安装了 D2005 的事实有关的问题......?
Does someone can please help me ?
有人可以帮我吗?
Thanks
谢谢
EDIT:Here is the event log, in the IDE during build, we can see that it FOUND and LOAD OCI.dll, so the error (Cannot load oci.dll) may not be the good one :
编辑:这是事件日志,在构建期间的 IDE 中,我们可以看到它 FOUND 和 LOAD OCI.dll,因此错误(无法加载 oci.dll)可能不是好的错误:
Début du Thread : ID du thread : 5588. Processus Server.exe (5548)
Début du processus : C:\Documents and Settings\frplante\Mes documents\Développement\Projets\Démo DataSnap2009\Server\Server.exe. Adresse de base : ##代码##400000. Processus Server.exe (5548)
Chargement du module : Server.exe. Contient des infos de débogage. Adresse de base : ##代码##400000. Processus Server.exe (5548)
Chargement du module : ntdll.dll. Pas d'informations de débogage. Adresse de base : C910000. Processus Server.exe (5548)
Chargement du module : KERNEL32.dll. Pas d'informations de débogage. Adresse de base : C800000. Processus Server.exe (5548)
Chargement du module : OLEAUT32.dll. Pas d'informations de débogage. Adresse de base : 0E0000. Processus Server.exe (5548)
Chargement du module : ADVAPI32.dll. Pas d'informations de débogage. Adresse de base : DA0000. Processus Server.exe (5548)
Chargement du module : RPCRT4.dll. Pas d'informations de débogage. Adresse de base : E50000. Processus Server.exe (5548)
Chargement du module : Secur32.dll. Pas d'informations de débogage. Adresse de base : FC0000. Processus Server.exe (5548)
Chargement du module : GDI32.dll. Pas d'informations de débogage. Adresse de base : EF0000. Processus Server.exe (5548)
Chargement du module : USER32.dll. Pas d'informations de débogage. Adresse de base : E390000. Processus Server.exe (5548)
Chargement du module : msvcrt.dll. Pas d'informations de débogage. Adresse de base : BE0000. Processus Server.exe (5548)
Chargement du module : ole32.dll. Pas d'informations de débogage. Adresse de base : 4A0000. Processus Server.exe (5548)
Chargement du module : MSIMG32.dll. Pas d'informations de débogage. Adresse de base : 310000. Processus Server.exe (5548)
Chargement du module : VERSION.dll. Pas d'informations de débogage. Adresse de base : BD0000. Processus Server.exe (5548)
Chargement du module : COMCTL32.dll. Pas d'informations de débogage. Adresse de base : 390000. Processus Server.exe (5548)
Chargement du module : SHLWAPI.dll. Pas d'informations de débogage. Adresse de base : F40000. Processus Server.exe (5548)
Chargement du module : wxvault.dll. Pas d'informations de débogage. Adresse de base : 000000. Processus Server.exe (5548)
Chargement du module : PSAPI.DLL. Pas d'informations de débogage. Adresse de base : BA0000. Processus Server.exe (5548)
Chargement du module : MPR.dll. Pas d'informations de débogage. Adresse de base : A60000. Processus Server.exe (5548)
Chargement du module : detoured.dll. Pas d'informations de débogage. Adresse de base : ##代码##370000. Processus Server.exe (5548)
Chargement du module : SHELL32.dll. Pas d'informations de débogage. Adresse de base : C9D0000. Processus Server.exe (5548)
Chargement du module : IMM32.dll. Pas d'informations de débogage. Adresse de base : 320000. Processus Server.exe (5548)
Chargement du module : UxTheme.dll. Pas d'informations de débogage. Adresse de base : B090000. Processus Server.exe (5548)
Chargement du module : **dbxora.dll**. Pas d'informations de débogage. Adresse de base : ##代码##FC0000. Processus Server.exe (5548)
Chargement du module : **OCI.dll**. Pas d'informations de débogage. Adresse de base : ##代码##3F0000. Processus Server.exe (5548)
Chargement du module : ORA805.dll. Pas d'informations de débogage. Adresse de base : 430000. Processus Server.exe (5548)
Chargement du module : CORE40.dll. Pas d'informations de débogage. Adresse de base : 5C0000. Processus Server.exe (5548)
Chargement du module : NLSRTL33.dll. Pas d'informations de débogage. Adresse de base : 620000. Processus Server.exe (5548)
Chargement du module : WINMM.dll. Pas d'informations de débogage. Adresse de base : AE0000. Processus Server.exe (5548)
Chargement du module : NL80.dll. Pas d'informations de débogage. Adresse de base : 660000. Processus Server.exe (5548)
Chargement du module : WSOCK32.dll. Pas d'informations de débogage. Adresse de base : A10000. Processus Server.exe (5548)
Chargement du module : WS2_32.dll. Pas d'informations de débogage. Adresse de base : 9F0000. Processus Server.exe (5548)
Chargement du module : WS2HELP.dll. Pas d'informations de débogage. Adresse de base : 9E0000. Processus Server.exe (5548)
Chargement du module : OTRACE80.dll. Pas d'informations de débogage. Adresse de base : 680000. Processus Server.exe (5548)
Chargement du module : NS80.dll. Pas d'informations de débogage. Adresse de base : 6B0000. Processus Server.exe (5548)
Chargement du module : nasns80.dll. Pas d'informations de débogage. Adresse de base : 6F0000. Processus Server.exe (5548)
Chargement du module : nz80.dll. Pas d'informations de débogage. Adresse de base : 720000. Processus Server.exe (5548)
Chargement du module : NNFG80.dll. Pas d'informations de débogage. Adresse de base : 770000. Processus Server.exe (5548)
Chargement du module : NNCI80.dll. Pas d'informations de débogage. Adresse de base : 780000. Processus Server.exe (5548)
Chargement du module : NNG80.dll. Pas d'informations de débogage. Adresse de base : 790000. Processus Server.exe (5548)
Chargement du module : NMP80.dll. Pas d'informations de débogage. Adresse de base : 7B0000. Processus Server.exe (5548)
Chargement du module : NPL80.dll. Pas d'informations de débogage. Adresse de base : 7C0000. Processus Server.exe (5548)
Chargement du module : NR80.dll. Pas d'informations de débogage. Adresse de base : 7D0000. Processus Server.exe (5548)
Chargement du module : NT80.dll. Pas d'informations de débogage. Adresse de base : 7F0000. Processus Server.exe (5548)
Chargement du module : NCR80.dll. Pas d'informations de débogage. Adresse de base : 800000. Processus Server.exe (5548)
Chargement du module : NMS80.dll. Pas d'informations de débogage. Adresse de base : 840000. Processus Server.exe (5548)
Chargement du module : NNFD80.dll. Pas d'informations de débogage. Adresse de base : 850000. Processus Server.exe (5548)
Chargement du module : NNFN80.dll. Pas d'informations de débogage. Adresse de base : 860000. Processus Server.exe (5548)
Chargement du module : NI80.dll. Pas d'informations de débogage. Adresse de base : 870000. Processus Server.exe (5548)
Chargement du module : PLS805.dll. Pas d'informations de débogage. Adresse de base : 880000. Processus Server.exe (5548)
Chargement du module : NDWSI80.DLL. Pas d'informations de débogage. Adresse de base : A80000. Processus Server.exe (5548)
Exception déclenchée à C812AEB. Classe d'exception TDBXError avec message '**Cannot load oci.dll library** (error code 127). The oci.dll library may be missing from the system path'. Processus Server.exe (5548)
回答by devio
Problems like these usually occur if you switch Oracle Homes, but you didn't mention multiple installs.
如果您切换 Oracle 主目录,通常会出现此类问题,但您没有提到多次安装。
Can you connect to Oracle using SqlPlus? This pagealso recommends checking for multiple copies of oci.dll in the path (esp. windows\system32)
你可以使用SqlPlus连接到Oracle吗?此页面还建议检查路径中的 oci.dll 的多个副本(尤其是 windows\system32)
回答by mj2008
Windows error code 127 is a procedure not found, which perhaps means that there is an old version of the DLL, or a missing function or something,
Windows 错误代码 127 是找不到程序,这可能意味着存在旧版本的 DLL,或者缺少函数什么的,
回答by mj2008
i have problems with Oracle 10g XE Client. My fault was, that i installed multiple clients. Problem disappeared after i uninstalled them, and install the right one.
我在使用 Oracle 10g XE 客户端时遇到问题。我的错是,我安装了多个客户端。我卸载它们后问题消失了,并安装了正确的。
回答by Re0sless
I has a similar problem with the DBXpress drivers I cant rember 100% what I did to fix it, my problem was moving it from one windows PC to another (for installation).
我的 DBXpress 驱动程序也有类似的问题,我无法 100% 记住我为修复它所做的工作,我的问题是将它从一台 Windows PC 移动到另一台(用于安装)。
here is what I can remember trying
这是我记得的尝试
Putting the database dll in the same dir as the application along with the 3 or 4 dll from dbexpress (as the problem I was having was the dbexpress dlls (not my application) couldn't find the database dll's)
将数据库 dll 与应用程序以及来自 dbexpress 的 3 或 4 dll 放在同一目录中(因为我遇到的问题是 dbexpress dll(不是我的应用程序)找不到数据库 dll)
Made sure I had the correct c++ run time libs installed, as I believe the DBX drivers need this.
确保我安装了正确的 c++ 运行时库,因为我相信 DBX 驱动程序需要这个。
Updated windows to sp3 (I guess you can skip this step as your not changing computers)
将 windows 更新为 sp3(我猜你可以跳过这一步,因为你不换电脑)
回答by zendar
If you are running this on Windows Vista, did you check that your program have access rights to oci.dll?
如果您在 Windows Vista 上运行它,您是否检查过您的程序对 oci.dll 具有访问权限?
If not one of answers work, then you should contact CodeGear to confirm if Oracle 8.0.5 is still supported. Even Oracle in drivers does not support access to 8.0.5 for several years now. There was an article on Metalink that describes what version of server can be accessed by specific client versions.
如果其中一个答案无效,那么您应该联系 CodeGear 以确认是否仍支持 Oracle 8.0.5。甚至 Oracle 在驱动程序中也不支持对 8.0.5 的访问已有几年了。Metalink 上有一篇文章描述了特定客户端版本可以访问哪个版本的服务器。
回答by Schalk Versteeg
Try copying the dll into the program's root folder
尝试将dll复制到程序的根文件夹中