Hi,
I'm actually trying to precompile our library. This seems to necessitate
putting some of the initialisation code we had in an __init__ function.
But I'm having problems with the cglobal syntax.
According to the documentation, it takes a tuple with exactly the same
format as ccall.
But this works inside __init__:
ccall((:pari_init, "$pkgdir/local/lib/libpari"), Void, (Int, Int),
3000000000, 10000)
But this does not:
global avma = cglobal((:avma, "$pkgdir/local/lib/libpari"), Ptr{Ptr{Int}})
The complaint is below. Can someone help me?
Note that if I change that string to just :libpari, it complains that
libpari is not found. This is despite me dlopen'ing libpari earlier in
__init__.
I have also set Libdl.DL_LOAD_PATH (I am on Linux) in __init__.
This all works fine if I put the code outside of __init__, but then I can't
precompile. As soon as I put it inside __init__, it no longer seems to work.
Bill.
ERROR: LoadError: InitError: TypeError: __init__: in ccall: first argument
not a pointer or valid constant expression, expected Ptr{T}, got
Tuple{Symbol,ASCIIString}
in __init__ at /home/wbhart/.julia/v0.4/Nemo/src/Nemo.jl:61
in _require_from_serialized at loading.jl:84
in require at ./loading.jl:218
in include at ./boot.jl:260
in include_from_node1 at ./loading.jl:271
in process_options at ./client.jl:308
in _start at ./client.jl:411
during initialization of module Nemo
while loading /home/wbhart/.julia/v0.4/Nemo/test/runtests.jl, in expression
starting on line 1
================================[ ERROR: Nemo
]=================================
failed process: Process(`/home/wbhart/julia/usr/bin/julia
--check-bounds=yes --code-coverage=none --color=yes
/home/wbhart/.julia/v0.4/Nemo/test/runtests.jl`, ProcessExited(1)) [1]
================================================================================
ERROR: Nemo had test errors
in error at ./error.jl:21
in test at pkg/entry.jl:753
in anonymous at pkg/dir.jl:31
in cd at file.jl:22
in cd at pkg/dir.jl:31
in test at pkg.jl:71