2010-04-12 8 views
0

J'ai besoin d'écrire des données dans plusieurs bases de données. Je choisis sqlapi.comAccès à la base de données Oracle avec sqlapi C++

Je l'ai fait pour mysql et mssql. Maintenant, j'ai un problème avec la base de données Oracle.

J'ai installé le serveur et le client sur Ubuntu. Dans navigateur cela fonctionne, mais SQLAPI dit:

libnnz10.so: ne peut pas ouvrir le fichier objet partagé : Aucun fichier ou répertoire

API SGBD Library 'libclntsh.so' chargement échoue

Cette bibliothèque est une partie de l'installation client SGBD, non SQLAPI ++

Assurez-vous que le client SGBD est installé et

cette bibliothèque nécessaire est disponible pour chargement dynamique

Linux/Unix:

1) Les répertoires dans l'environnement de LD_LIBRARY_PATH utilisateur variables

2) La liste des bibliothèques mises en cache dans /etc/ld.so.cache

3)/usr/lib, suivi/lib

Il y a ces deux fichiers depp dans/usr/lib. J'ai essayé de nombreuses façons de dire le chemin eclipse dans ce dossier, mais rien ne fonctionne.

Merci pour votre aide.

+0

'libclntsh.so' est la bibliothèque cliente pour accéder aux bases de données Oracle. Donc, fondamentalement, vous demandez comment dire à Eclipse où prendre une DLL donnée à droite? Je ne suis pas sûr de comprendre, lancez-vous votre programme depuis eclipse ou depuis la ligne de commande ....? –

Répondre

1

Je pense que vous devez définir la variable LD_LIBRARY_PATH sur le chemin du fichier de la bibliothèque partagée.

par exemple.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/instantclient/lib 

Définissez la variable dans .profile ou .bash_profile. Cela dépend du shell que vous utilisez.

Mise à jour

En raison de nouvelles exigences de sécurité dans ubuntu (voir https://bugs.launchpad.net/ubuntu/+bug/366728 pour plus de détails) vous ne pouvez pas utiliser LD_LIBRARY_PATH pour les shells non interactifs. Utilisez la procédure suivante (ajustez le chemin oracle selon vos besoins):

echo "/opt/oracle/product/whatever/lib" | sudo tee /etc/ld.so.conf.d/oracle.conf 
sudo ldconfig -v 
+0

oui, probablement, il a quelque chose à voir avec ce chemin. "Echo LD_LIBRARY_PATH" ne me donne rien. j'ai essayé de le changer avec cette exportation, resp. "export LD_LIBRARY_PATH = /usr/lib/oracle/xe/app/oracle/products/ 10.2.0/client/» il dans sous-répertoire/lib/sont ces * .so fichiers mais le travail ne marche pas: -/ – Meloun

+0

ha quand j'ajouter cette exportation à .profile, après le redémarrage est la variable $ LD_LIBRARY_PATH encore vide, réécritures quelque chose! mes paramètres, en fait seulement cette variable – Meloun

+0

https://help.ubuntu.com/community/EnvironmentVariables "LD_LIBRARY_PATH ne peut pas être défini dans les fichiers $ HOME/.profile,/etc/profile, ni/etc/environment. Vous devez utiliser les fichiers de configuration /etc/ld.so.conf.d/*.conf. " Oui, c'était la raison pour laquelle je l'ai découvert hier aussi merci. – Meloun

Questions connexes