2
est ici un module minimal importe Foreign.R
(notez qu'il utilise ne même pas):ne peut pas compiler un module Foreign.R importation
-- test.hs
{-# LANGUAGE ForeignFunctionInterface #-}
module Test where
import Foreign
import Foreign.R
foreign export ccall testR :: Ptr (Double) -> IO()
testR :: Ptr (Double) -> IO()
testR result = do
poke result $ 1
Cette compilation échoue:
ghc -fPIC -shared -dynamic -lHSrts-ghc7.10.3 test.hs -o test.so
Il donne :
Linking test.so ...
/usr/bin/ld: test.o: réadressage R_X86_64_PC32 vers symbole « Test_testR_closure » ne peut pas être utilisé en créant un objet partagé ; recompilé avec -fPIC
/usr/bin/ld : échec de l'édition de liens finale : Mauvaise valeur
collect2: error: ld returned 1 exit status
Désolé pour le français ... En anglais, il devrait ressembler à:
Linking test.so ...
/usr/bin/ld: test.o: relocation R_X86_64_PC32 to symbol « Test_testR_closure » cannot be used by creating a shared object; recompile with -fPIC
/usr/bin/ld : failure edit final link : Bad value
collect2: error: ld returned 1 exit status
Il n'y a pas de problème si j'enlève import Foreign.R
.