CxxCall allows calling C++ code from Julia:
using CxxCall
...
@cxx mylib function add(x::Cint, y::Cint)::Cfloat
"""
float ret = x + y;
std::cout << "Welcome to libAddCxx" << std::endl;
std::cout << "x=" << x << " y=" << y << " ret=" << ret << std::endl;
return ret;
"""
end
...
For complete examples check out the tests.
- CxxCall.jl is just syntactic sugar on top of CxxInterface.jl. The actual work is done by CxxInterface.jl.
- Cxx.jl allows to mix julia and C++ code. It is an amazing proof of concept, but notoriously hard to maintain.
- CxxWrap.jl is probably the most mature option. The user specifies the wrapping on the C++ side.
- CxxInterface.jl. Wrappers are specified on the julia side using string manipulation. Compared to the above alternatives, this approach is very simple.
Base.ccall
. Writing a C-API and calling it manually usingccall
is always an option. If templates are involved the amount of code becomes unwieldy quickly however.