无法加载DLL"OraOps10.dll"

Sud*_*ali 6 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

PS:

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

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

我们都在使用Oracle 10g.

Cod*_*odo 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客户端安装了什么目录?你能看到正确的注册表项吗?