This is the mail archive of the
mailing list for the Cygwin project.
Oracle OCI under cygwin
- From: "Michel Bardiaux" <MBardiaux at mediaxim dot be>
- To: <cygwin at cygwin dot com>
- Date: Wed, 7 Mar 2012 14:38:03 +0100
- Subject: Oracle OCI under cygwin
I have an up-to-date cygwin on XP SP3 (and yes, rebasealled). I have
also installed the Oracle basic (NOT instant) client for Win32. And I
have a C application that queries an Oracle DB using OCI. Another
relevant bit of setup info: environment variable TNS_ADMIN =
\\besprd01\techdoc\database\oracle\OracleNet_WinClient (set in XP
Now, when compiled with MS Visual Studio 2010 Express, and run from a
DOS (sic) box, the app works fine, which proves both the app and the
setup are basically fine. Ditto when run from a Cygwin mintty.
But if I compile my app with cygwin, and run it in mintty (of course), I
get an error message meaning essentially that OCILogon failed because it
did not find an Oracle config file called tnsnames.ora that is supposed
to be in $TNS_ADMIN.
Strace gives no clue - because the app WORKS when run by strace! The
Win32 PROCMON shows that tnsnames.ora is looked for in %TNS_ADMIN% for
the pure win32 app, but in the local directory for the cygwin app.
Indeed, if I kluge my code in the cygwin case to temporarily chdir to
$TNS_ADMIN (rewritten as a cygwin path of course) just before calling
OCILogon, it works.
So, it is all rather mysterious. My guess is that some magic is done
inside cygwin that intercepts some "system calls" (though there is not
really such a thing in Windows) made by the Oracle libs and transforms
them in some way. But I am not familiar enough with cygwin internals to
go much farther (besides, my C++ is minimal).
Help? Please? Pretty please?
(s) Michel Bardiaux
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple