Bonjour à tous,
Je démarre tout juste avec l'API.
Après quelques maladresses, j'arrive enfin à compiler et exécuter un programme (Merci Vincent...).
Maintenant, j'utilise la toute première instruction OCI_Initialize.
Pour celà, je teste le code suivant sur un poste Windows 7 dans Visual Studio C++, projet MFC avec utilisation des MFC en statique (ça peut éventuellement être important) :
Et si je poste ce message, c'est que j'obtiens à l'écran l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int res_oci_ini; res_oci_ini=OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT | OCI_ENV_CONTEXT); if(res_oci_ini!=TRUE) { OCI_Error *err = OCI_GetLastError(); CString logecran; logecran.Format("Erreur Oracle : OCI_Initialize. errcode=%d errmsg=%s", OCI_ErrorGetOCICode(err), OCI_ErrorGetString(err)); MessageBox(logecran); }
"Erreur Oracle : OCI_Initialize. errcode=0 errmsg=Cannot load OCI shared library (oci.dll)"
Je me dis que le programme ne trouve peut-être pas la DLL de mon Oracle.
J'ai installé Oracle 11g (client+serveur) dans le répertoire :
D:\ORACLE
J'ai regardé la définition de OCI_Initialize.
Et d'après ce que j'ai lu, le deuxième argument, optionnel, peut être un path où aller chercher :
* Soit on ne précise pas le path et Windows 'sait' où aller chercher
* Soit on ne précise pas le path, et si Windows ne sait pas où chercher, ce sera dans son PATH
* Soit on précise un path où aller chercher
J'ai donc testé plusieurs choses :
* de copier les fichiers oci*.dll de mon BIN Oracle dans C:\WINDOWS (c'est là où j'ai d'ailleurs copié ociliba.dll)
* d'appeler la fonction OCI_Initialize avec l'un des deux paramétrages suivants, successivement :
J'ai toujours exactement le même message d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 resociini=OCI_Initialize(NULL, "D:\\Oracle\\product\\11.2.0\\dbhome_1\\BIN", OCI_ENV_DEFAULT | OCI_ENV_CONTEXT); resociini=OCI_Initialize(NULL, "D:\\Oracle", OCI_ENV_DEFAULT | OCI_ENV_CONTEXT);
Quelqu'un voit-il ce qui peut se passer et proposer quelque chose ?
Question subsidiaire qui est peut être naïve : le message d'erreur indique que 'oci.dll' ne peut se charger. S'il s'agit bien de oci.dll de mon client Oracle, comment le programme sait-il son nom alors qu'il n'arrive pas à la charger?
Partager