无法加载DLL“OraOps10.dll”
我遇到了一个特殊的问题。 我正在开发一个基于Windows的应用程序,它连接到Oracle数据库。
对于初始测试,我已经创建了安装程序并在我拥有的不同机器上进行了测试。 每台机器都安装了Oracle客户端,我没有看到运行应用程序时出现任何问题。
但是当我与客户共享此安装程序时,他收到错误“无法加载DLL OraOps10.dll”。 当被问及他提到并在他的机器上安装了Oracle客户端时,他能够运行连接到Oracle数据库的其他C#应用程序。
我不明白为什么我的应用程序只会出错。 我甚至尝试过在https://forums.oracle.com/forums/thread.jspa?threadID=67364上分享的建议,但仍然没有运气。
我甚至尝试在客户的机器上手动复制可执行文件和DLL。 但仍面临同样的问题。
所以请帮助我,我还能做些什么。
谢谢和最诚挚的问候
Sudhakar Chavali
PS:
我使用的是Windows XP操作系统,客户也使用相同的操作系统。 两台机器都只是32位操作系统。
这是客户安装oracle客户端的位置:C:\ oracle \ product \ 10.2.0 \ client_1 \ bin,同样也是我的版本。
我们都在使用Oracle 10g。
ODP.NET驱动程序基本上由两部分组成。 .NET部分和本机OCI部分。 该错误消息表明.NET部分正在运行但无法加载本机部分。
这些问题可能是导致的:
-
.NET部分和本机部分之间存在版本不匹配。 请注意,
OraOps10.dll
属于Oracle 10g。 所以.NET部分显然是版本10,它正在为版本10寻找原生部分。 -
可能存在一点点不匹配。 如果.NET部分以64位模式运行,它将寻找64位本机OCI DLL。 在64位系统上,任务管理器可以告诉您进程是32位还是64位。 32位进程标有
*32
。 -
注册表可能不包含本机DLL的正确路径。 ODP.NET将检索
HKEY_LOCAL_MACHINE\Software\Oracle\ODP.NET\2.xxx.xx\DllPath
以找到OCI DLL。 请注意,注册表分为32位和64位部分。 根据查看注册表的过程,它将获得不同的值。
最好将所有可用信息添加到您的问题中。 它是64位操作系统吗? 它是32位还是64位进程? 安装了哪个版本的Oracle客户端? Oracle客户端安装了什么目录? 你能看到正确的注册表项吗?
至于我,我Unable to load DLL "OraOps12.dll"
错误消息。
它是一个Web应用程序,我正在使用Oracle XE。 Web应用程序(客户端应用程序)和Oracle XE数据库服务器都安装在同一台计算机上。
Oracle XE数据库服务器自带Oracle 11客户端,但ASP.NET MVC Web应用程序使用的是Oracle 12客户端。 即使我在机器上安装了Oracle 12即时客户端,ASP.NET MVC网站也看不到它,它一直在抱怨“无法加载DLL OraOps12.dll”。
我要做的是编辑HKLM\Software\Oracle\ODP.NET\DllPath
以指向Oracle 12即时客户端,而不是使用Oracle XE安装的Oracle 11客户端。
一旦我有空,我会在稍后发布更详细的解释。
我怀疑未安装整个Oracle客户端或安装了早期版本。
您应该让客户validation安装的Oracle客户端版本是否与您的版本匹配,以及是否安装了整个客户端,而不仅仅是.Net部分。
您是否可以更多地了解此问题,例如目标操作系统是32位还是64位。 尝试生成x86和64位安装程序并检查您的客户端计算机。 如果不是,则客户端PC中可能未正确安装Oracle客户端。 处理这些问题有点棘手。 尝试从其他方向看它。