[Haskell-beginners] help with FFI: passing char* to dll function + pointer freeing
Brandon Allbery
allbery.b at gmail.com
Sat Sep 21 01:06:34 CEST 2013
On Fri, Sep 20, 2013 at 6:53 PM, Miro Karpis <miroslav.karpis at gmail.com>wrote:
> Please, I just can not figure this out:
>
> I have a method in my C dll:
> int somemethod(char *param, int length, double array[], int UB1, int UB2,
> bool isValid);
>
> I would like to use this method in Haskell, so I have defined it like:
>
> foreign import stdcall unsafe "somemethod" c_somemethod :: Ptr CString
>
You don't want Ptr CString. See:
Prelude> :m +Foreign.C.String
Prelude Foreign.C.String> :i CString
type CString = GHC.Ptr.Ptr Foreign.C.Types.CChar
-- Defined in `Foreign.C.String'
In other words, CString is an alias for Ptr CChar. Ptr CString corresponds
to (char **), not (char *).
--
brandon s allbery kf8nh sine nomine associates
allbery.b at gmail.com ballbery at sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20130920/03ce491d/attachment.htm>
More information about the Beginners
mailing list