
You are passing wchar_t* and function expects char*. On 03/15/2014 12:23 AM, Miro Karpis wrote:
here comes the c definition:
int setmodulestring(char* parameter, int parameterLength, char* value, int valueLength, int setVarInArray);
In ghci the main and setmodulestring functions works fine
On Sat, Mar 15, 2014 at 12:14 AM, Branimir Maksimovic
mailto:branimir.maksimovic@gmail.com> wrote: On 03/14/2014 11:24 PM, Miroslav Karpis wrote:
Hi, please can you help me with following?
I have a call to an external dll (via ffi) which if executed from ghci works fine. If I compile my code with 'ghc -o fm Mycode.hs -L. -lextdll' and run it I get 'Segmentation fault/access violation in generated code'.
main = do let param = "FilePath" let value = "C:/dev/misc/haskell/services/FM" result <- liftIO $ FM.setmodulestring param value return "done"
setmodulestring :: String -> String -> IO CInt setmodulestring param value = do let cParamLength = fromIntegral $ length param ::CInt cValueLength = fromIntegral $ length value ::CInt setVarInArray = (-1)::CInt alloca $ \cParam -> do alloca $ \cValue -> do result <- c_setmodulestring cParam cParamLength cValue cValueLength setVarInArray return result
This does not seems correct (or incomplete).
If I try also with following, the behaviour is the same:
setmodulestring2 :: String -> String -> IO CInt setmodulestring2 param value = do cParam <- newCWString param cValue <- newCWString value let cParamLength = fromIntegral $ length param ::CInt cValueLength = fromIntegral $ length value ::CInt setVarInArray = (-1)::CInt result <- c_setmodulestring cParam cParamLength cValue cValueLength setVarInArray free cParam free cValue return res
This one may be correct but without, seeing C code (where it probably segfaults) I cannot say anything further. exact ffi declaration of c_setmodulestring would be usefull, too, to compare with C function.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org mailto:Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe