Re[2]: [Haskell-cafe] FFI, C/C++ and undefined references

2010-01-14 Thread Bulat Ziganshin
Hello Daniel,

Thursday, January 14, 2010, 11:08:24 PM, you wrote:

i think you are wrong. stdcall used for std windows dlls, but gcc by
default generates ccall things. and cl anyway useless here

 Just an idea. Are you on windows?
 If so, then your foreign calls would probably have to be

 foreign import stdcall srilm.h whatever ...

 instead of 

 foreign import ccall ...


 Malcolm Wallace wrote:
  However, if you are unsure of which Haskell packages are needed, it is
  wise to let ghc work out the dependencies for you, e.g. with
   ghc --make Main.hs slirm.o
 
  It cannot work out the C/C++ dependencies though, so every time you
  get undefined reference linking errors, you must discover which C
  code provides those symbols, and add its object file to the
  commandline by hand.

 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe


-- 
Best regards,
 Bulatmailto:bulat.zigans...@gmail.com

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re[2]: [Haskell-cafe] FFI, C/C++ and undefined references

2010-01-14 Thread Bulat Ziganshin
Hello DNM,

Thursday, January 14, 2010, 10:42:42 PM, you wrote:

there is better way rather than playing with random bits. just find
tutorial on FFI, and try it. once this example works, start modifying
it to learn various aspects of ffi and add functionality you need

it's one thing i've learned in those 20 years - go forward in small
steps keeping working code instead of jumping at large distance and
then spending days without any clue


 Which is weird, because 'srilm.o'/'srilm.h' are the files that define the
 mysterious undefined references.  I'll keep plugging away and report
 back when (or whether) I make some progress.  In the meanwhile, if anyone
 has a clue, I'm all ears.

 Best,
 D.N.


 Malcolm Wallace wrote:
 
 However, if you are unsure of which Haskell packages are needed, it is  
 wise to let ghc work out the dependencies for you, e.g. with
  ghc --make Main.hs slirm.o
 
 It cannot work out the C/C++ dependencies though, so every time you  
 get undefined reference linking errors, you must discover which C  
 code provides those symbols, and add its object file to the  
 commandline by hand.
 




-- 
Best regards,
 Bulatmailto:bulat.zigans...@gmail.com

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: Re[2]: [Haskell-cafe] FFI, C/C++ and undefined references

2010-01-14 Thread Stephen Tetley
2010/1/14 Bulat Ziganshin bulat.zigans...@gmail.com:

 there is better way rather than playing with random bits. just find
 tutorial on FFI, and try it. once this example works, start modifying
 it to learn various aspects of ffi and add functionality you need


Also binding to a C library is easier than binding to a C++ one, if
you can think of another library rather than SRILM that will meet your
needs...

Best wishes

Stephen
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re[2]: [Haskell-cafe] FFI, C/C++ and undefined references

2010-01-13 Thread Bulat Ziganshin
Hello DNM,

Thursday, January 14, 2010, 7:07:43 AM, you wrote:

 Yes, I thought of doing this, but then thought it was better to use a
 so-called managed foreign pointer via newForeignPtr.

i recommend to use Ptr and switch to ForeignPtr only when you will
study how to use it. overall, unsafe* functions are really unsafe, and
using them without learning will lead to mysterious problems. it's
like painting with eyes closed

 Good point.  I would do this if I planned to train or update the language
 model 
 from within Haskell, but, as it stands, I just want to train it once (at the
 command line, 
 using the built-in mechanisms of SRILM) and then read in the ARPA-formatted
 language 
 model file for use in Haskell.

you may add problems by using unsafePerformIO. i recommend you to
learn first how to manage FFI without it, make program work, and only
then try to use it. eat elephant in small pieces!

look into http://haskell.org/haskellwiki/IO_inside


-- 
Best regards,
 Bulatmailto:bulat.zigans...@gmail.com

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re[2]: [Haskell-cafe] FFI, C/C++ and undefined references

2010-01-13 Thread Bulat Ziganshin
Hello Brandon,

Thursday, January 14, 2010, 7:40:45 AM, you wrote:
 Really, the only reason in this case is that there is no equivalent
 for `extern C' that you can apply to a function definition, only to
 a declaration

it works with GCC:

extern C int c_szOpenArchive (TABI_ELEMENT* params)
{

}

-- 
Best regards,
 Bulatmailto:bulat.zigans...@gmail.com

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe