MonoDevelop错误 - System.DllNotFoundException:libclntsh.so

时间:2014-04-03 20:03:57

标签: oracle11g mono monodevelop redhat oracleclient

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

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

例外:

  

System.DllNotFoundException:libclntsh.so at(wrapper   托管到本机)   System.Data.OracleClient.Oci.OciCalls / OciNativeCalls:OCIEnvCreate

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

位置下

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

  

出口   LD_LIBRARY_PATH = /家庭/ DBUSER / instantclient_12_1:$ LD_LIBRARY_PATH

但我仍然得到同样的错误。我找不到在MonoDevelop中包含库的任何选项。

由于

2 个答案:

答案 0 :(得分:0)

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

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

echo /home/dbuser/instantclient_12_1 > /etc/ld.so.conf.d/instantclient.conf

然后以root更新链接器缓存命令:

ldconfig

重启MonoDevelop并重试。

答案 1 :(得分:0)

我已通过以下

解决了这个问题
  

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

     

将$ ORACLE_HOME,$ ORACLE_INCLUDE_PATH和$ ORACLE_LIB_PATH设置为   /etc/profile.d中

由于某些原因,如果我使用OCI客户端库,MonoDevelop IDE不会选择库libclntsh.so