[squeak-dev] FFI and global structs (I think)
Schwab,Wilhelm K
bschwab at anest.ufl.edu
Fri Jul 9 03:47:16 UTC 2010
Andreas,
I am using FFI to make calls into the Gnu Scientific Library and am having problems that I do not understand. They provide "types" for various algorithms/functions/etc. which appear to be global structs. Suppose I want to use Haar wavelets; then I have interest in what I believe is a struct exported as gls_wavelet_haar.
My simple-minded understanding of such things is that "the name is address" and that dlsym()/GetProcAddress() should provide a void pointer to the correct place in memory. My attempts at doing that have ended badly. If I instead export a function of my own (from a library that links to GSL), something like
gls_wavelet_type* WaveletHaar()
{
return gsl_wavelet_haar;
}
and call it something like
waveletTypeHaar
< cdecl: GslWaveletType* WaveletHaar()>
then all is well. If I use
GslWaveletType fromHandle:
with an address from dlsym(), ugliness (segment fault) follows. Am I missing something really fundamental, or should #fromHandle: be able to do the job?
Bill
More information about the Squeak-dev
mailing list
|