Ошибка MonoDevelop — System.DllNotFoundException: libclntsh.so

Я создал консольный проект C#, используя библиотеки Visual Studio 2008 и OracleClient (OCI) для подключения к базе данных 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 в (оболочка, управляемая в собственный) 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.

Спасибо


person Ullan    schedule 03.04.2014    source источник


Ответы (2)


Похоже, что переменная среды LD_LIBRARY_PATH настроена неправильно или не применяется.

Вместо этого попробуйте создать дополнительный файл конфигурации компоновщика с помощью следующей команды:

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

Затем, как root, обновите кеш компоновщика с помощью команды:

ldconfig

Перезапустите MonoDevelop и повторите попытку.

person jariq    schedule 03.04.2014
comment
Я удалил переменные среды из файла .bashrc и попробовал ваш код, но все равно получаю ту же ошибку. - person Ullan; 04.04.2014

Я решил проблему, выполнив следующие действия

эхо $ORACLE_HOME/lib > /etc/ld.so.conf.d/dbconf.conf

установите $ORACLE_HOME, $ORACLE_INCLUDE_PATH и $ORACLE_LIB_PATH в /etc/profile.d

По какой-то причине MonoDevelop IDE не выбирает библиотеку libclntsh.so, если я использую клиентские библиотеки OCI.

person Ullan    schedule 06.05.2014