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

Reply via email to