don't get a correct memory address at a getter Method

Nick Rudnick joerg.rudnick at
Fri Aug 27 17:12:06 EDT 2010


being new to the FFI, I hope this might have an easy solution:

The following (GHC 6.12.1),

---------------------- C++ lib
class A {
     B* getB(){ B* ptr= &b; cerr << "C: " << << endl; return ptr; }
     B b;
---------------------- C wrapper
B* A_getB(A* a){ a->getB(); }
---------------------- Haskell lib
foreign import ccall unsafe "A_getB"
   a_getB:: APtr-> IO BPtr
   getB = a_getB
---------------------- Haskell app
   b <-getB a
   putStrLn ("HS: "++show b)

leads to deviated pointer addresses, e.g.,
     C: 0x19bc808
     HS: 0x00007fa92f812c80

Do you know a solution? Am I doing something wrong?

Thanks in advance,


More information about the FFI mailing list