我使用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中包含库的任何选项。
由于
答案 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