Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
392 views
in Technique[技术] by (71.8m points)

c# - Unable to load DLL “OraOps10.dll”

I am running into peculiar issue. I am developing a windows based application which connects to Oracle database.

For initial testings, I have created installer and tested on different machines that I have. Each machine has Oracle Client installed and I did not see any problem in running application.

But when I share this installer with customer, he is getting error "Unable to load DLL OraOps10.dll". When asked he mentioned and has shown the Oracle Client installed on his machine and he is able to run other C# applications which connects to Oracle databases.

I do not understand why my application only getting above error. I even tried suggestions shared at https://forums.oracle.com/forums/thread.jspa?threadID=67364 but still no luck.

I even tried copying executables & DLLs manually on customer's machine. But still facing same issue.

So please help me on what else i can do.

Thanks & Best Regards
Sudhakar Chavali

P.S:

I am using Windows XP operating system and customer is also using same operating system. Both machines are of type 32 bit OS only.

This is the location where customer's oracle client installed: C:oracleproduct10.2.0client_1in and same is the version in my case too.

We both are using Oracle 10g.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The ODP.NET drivers basically consist of two parts. The .NET part and the native OCI part. The error message indicates that the .NET part is working but fails to load the native part.

These issue are likely causes:

  • There's a version mismatch between the .NET part and the native part. Note that OraOps10.dll belongs to Oracle 10g. So the .NET part isobviously of version 10, and it is looking for a native part for version 10.

  • There could be a bitness mismatch. If the .NET part is running in 64 bit mode, it'll be looking for the 64 bit native OCI DLLs. On a 64 bit system, the task manager can tell you whether the process is 32 or 64 bit. 32 bit processes are marked with *32.

  • The registry might not contain the correct path to the native DLLs. ODP.NET will retrieve the value of HKEY_LOCAL_MACHINESoftwareOracleODP.NET2.xxx.x.xDllPath to locate the OCI DLLs. Note that the registry is split into a 32 and 64 bit part. Depending on the process looking into the registry, it'll get different values.

It's best if you add all the available information to your question. Is it a 64 bit operating system? Is it a 32 or 64 bit process? Which version of the Oracle client was installed? What directory was the Oracle client installed? Can you see the correct registry entries?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...