Oracle11g MonoDevelop错误-System.DllNotFoundException:libclntsh.so

Oracle11g MonoDevelop错误-System.DllNotFoundException:libclntsh.so,oracle11g,mono,monodevelop,redhat,oracleclient,Oracle11g,Mono,Monodevelop,Redhat,Oracleclient,我使用VisualStudio2008和OracleClient(OCI)库创建了一个C#console项目,以连接到Oracle 11g数据库。此代码在Windows中工作。我将整个项目复制到Linux中,并使用MonoDevelop 4.2.3打开解决方案。但是在运行项目时,数据库打开调用抛出一个异常 string connectionString = "Data Source=Test; User ID=UID; Password=PWD" OracleConnection

我使用VisualStudio2008和OracleClient(OCI)库创建了一个C#console项目,以连接到Oracle 11g数据库。此代码在Windows中工作。我将整个项目复制到Linux中,并使用MonoDevelop 4.2.3打开解决方案。但是在运行项目时,数据库打开调用抛出一个异常

    string connectionString = "Data Source=Test; User ID=UID; Password=PWD"
    OracleConnection conn = new OracleConnection()
    conn.ConnectionString = connectionString;
    conn.Open();
例外情况:

System.DllNotFoundException:libclntsh.so at(包装器 管理到本地) System.Data.OracleClient.Oci.OciCalls/OciNativeCalls:OCIEnvCreate

libclntsh.so文件位于位置/home/dbuser/instantclient_12_1下

我通过在/home/dbuser/.bashrc文件中添加以下内容来设置环境变量,并重新启动了系统

出口 LD_LIBRARY_PATH=/home/dbuser/instantclient_12_1:$LD_LIBRARY_PATH

但我还是犯了同样的错误。我找不到在MonoDevelop中包含库的任何选项


感谢

看起来LD_LIBRARY_PATH环境变量未正确设置或未应用

请尝试使用以下命令创建其他链接器配置文件:

echo /home/dbuser/instantclient_12_1 > /etc/ld.so.conf.d/instantclient.conf
然后使用以下命令作为根更新链接器缓存:

ldconfig

重新启动MonoDevelop并重试。

我已通过执行以下操作解决了此问题

echo$ORACLE_HOME/lib>/etc/ld.so.conf.d/dbconf.conf

将$ORACLE\u HOME、$ORACLE\u INCLUDE\u PATH和$ORACLE\u LIB\u PATH设置为 /etc/profile.d


由于某些原因,MonoDevelop IDE没有选择libclntsh库。因此,如果我使用OCI客户端库,我从文件.bashrc中删除了环境变量,并尝试了您的代码,仍然会收到相同的错误。