linking with c++ libraries

Andrew J Bromage andrew@bromage.org
Sat, 21 Jul 2001 15:35:22 +1000


G'day all.

On Sat, Jul 21, 2001 at 01:32:43AM +0800, Corneliu Popeea wrote:

> I'm trying to use from Haskell a C++ library (Omega Calculator).
> I'm using the following command:
> 
> ghc -c -fglasgow-exts -package lang main.hs
> ghc main.o mylib.o -lomega -lstdc++ -fglasgow-exts -package lang
> 
> Do I need to add more options?

To reliably link with C++, you need to compile both the code which
invokes C++ (i.e. whatever uses the C++ library) and "main" (that is,
ghc/rts/Main.c, not main.hs) with a C++ compiler.

So, in summary:

	- Compile any code which may call the C++ library (and keep
	  inter-module inlining in mind; probably safest to compile
	  all of your code this way) via C, and compile the C with g++.

	- Re-compile the run-time system (at least Main.c) with
	  g++, too.

That may not fix your specific core dump, but you'll need to do this
anyway.

Cheers,
Andrew Bromage