
On 12/20/06, Bayley, Alistair
To build a program, you need to do
ghc --make db.hs -o db D:\Oracle\Ora92\bin\oci.dll
(put the path to your oci.dll here).
This compiles your program, and links it with oci.dll to get the Oracle externals resolved.
I've been working with Paul on his linking problems, and there's a gotcha for Oracle 10 users. Apparently the folder that contains oci.dll, typically $ORACLE_HOME/bin, can also include hsbase.dll, which has something to do with "Heterogeneous Services". Obviously (this being Windows, where filenames are not case sensitive) this clashes with GHC's HSbase.dll; hence linker errors.
To clarify a little - I believe the issue exists on Oracle 8i, 9i and 10g. It's not so much the version as the options you choose when you install the software. As far as I am able to confirm, a default enterprise edition install includes hsbase.dll. A default client install does not. If you do a custom install, then the relevant option is "Heterogeneous Services" - but the simplest way to check is just to look for hsbase.dll in the <oracle home>\bin directory. Alistair - maybe you could add a check in Setup.hs, to see if hsbase.dll is present, and if so, to display a warning? I can sort of see where such a check would occur (in configOracle), but I don't know enough about Cabal to suggest code... Paul.