无法加载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客户端。 处理这些问题有点棘手。 尝试从其他方向看它。