无法加载DLL“OraOps10.dll”

时间:2011-12-30 20:17:30

标签: c# oracle odp.net winforms-interop

我遇到了一个特殊的问题。我正在开发一个基于Windows的应用程序,它连接到Oracle数据库。

对于初始测试,我已经创建了安装程序并在我拥有的不同机器上进行了测试。每台机器都安装了Oracle客户端,我在运行应用程序时没有看到任何问题。

但是当我与客户共享此安装程序时,他收到错误“无法加载DLL OraOps10.dll”。当被问及他提到并在他的机器上安装了Oracle客户端时,他能够运行连接到Oracle数据库的其他C#应用程序。

我不明白为什么我的应用程序只会出错。我甚至尝试过在https://forums.oracle.com/forums/thread.jspa?threadID=67364分享的建议,但仍然没有运气。

我甚至尝试过复制可执行文件&在客户的机器上手动执行DLL。但仍面临同样的问题。

所以请帮助我做我还能做的其他事情。

谢谢&最诚挚的问候 Sudhakar Chavali

P.S:

我使用的是Windows XP操作系统,客户也使用相同的操作系统。两台机器都只是32位操作系统。

这是客户的oracle客户端安装的位置: C:\ oracle \ product \ 10.2.0 \ client_1 \ bin,同样也是我的版本。

我们都在使用Oracle 10g。

3 个答案:

答案 0 :(得分:10)

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.x.x\DllPath的值以找到OCI DLL。请注意,注册表分为32位和64位。根据查看注册表的过程,它将获得不同的值。

最好将所有可用信息添加到您的问题中。它是64位操作系统吗?它是32位还是64位进程?安装了哪个版本的Oracle客户端? Oracle客户端安装了什么目录?你能看到正确的注册表项吗?

答案 1 :(得分:0)

我怀疑未安装整个Oracle客户端或安装了早期版本。

您应该让客户验证安装的Oracle客户端版本是否与您的版本相匹配,并且安装了整个客户端,而不仅仅是.Net部分。

答案 2 :(得分:0)

您是否可以更多地了解此问题,例如目标操作系统是32位还是64位。尝试生成x86和64位安装程序并检查您的客户端计算机。如果不是,则客户端PC中可能未正确安装Oracle客户端。处理这些问题有点棘手。试着从其他方向看它。