[Haskell-cafe] Need help with very simple C++ FFI call
tpadilha84 at gmail.com
Tue Nov 19 14:59:07 UTC 2013
library). Theres one already at https://github.com/sol/v8 but I want
to do it again as an exercise to improve by haskell skills.
I chose this library be because it will force me to deal with impure
functions using monads. Since its not a trivial library, it will also
improve my knowledge of writing FFI bindings and cabal packages in
case I want to wrap more C++ libraries in the future.
My first step is to port the 'hello world' example in v8 embedders
guide(https://developers.google.com/v8/get_started) as a haskell
binding. So I have downloaded/compiled v8 and created the following
# v8 libraries
# v8 headers
Here's the contents of the haskell-v8.cpp file:
http://pastebin.com/RfYCCxFQ (basically a copy of the v8 embedders
example function, except that it returns a char pointer).
and here's the haskell module: http://pastebin.com/fnXVbEeU
I compiled a shared library exposing the c "hello" function with the
$ g++ \
-shared -o libhaskellv8.so \
And loaded into ghci with the following:
$ ghci -L. -lhaskellv8 src/V8.hs
The problem is that I get a segmentation fault when I call the 'hello'
function from ghci. To ensure the library was compiled correctly, I
successfully called it from python:
$ python -c \
'from ctypes import CDLL, c_char_p; lv8=CDLL("libhaskellv8.so");
lv8.hello.restype = c_char_p; print lv8.hello()'
I have selectively uncommented lines from the c++ file, and the
segmentation faults starts happening when I uncomment line 14
What am I missing here?
More information about the Haskell-Cafe