On Wed, May 30, 2007 at 12:28:43AM -0400, jeff p wrote: > Hello, > > >No, but ghc does pass a lot of funny flags... > > > >Double check ccall v. stdcall in the import declaration. That bites a > >lot of people on Windows. > > > My import statement originally looked like: > > foreign import ccall "mylib.h myFun" my_fun :: CDouble -> IO (Ptr > CDouble) > > and my original linker error was an undefined reference to 'myFun'. > > Changing the import statement to: > > foreign import stdcall "mylib.h myFun" my_fun :: CDouble -> IO (Ptr > CDouble) > > results in the linker complaining about undefined reference to '[EMAIL > PROTECTED]'.
That is very very very suspicious. the number after the @ is the number of bytes of argument data, which should be 8 for a single CDouble on x86 - not 24. > I also tried throwing in "static" but it seems to have no effect. What does the definition in the library look like? To be compatible with that import it should be: double *myFun(double); NOT any of: double *my_fun(double); static double *myFun(double); double myFun(double); I suspect you may have the two names in the import statement swapped. Stefan _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe