萌新请教,julia调用c++

C++基础不好,望解答。

老板给了C++编写的xxx.so和xxx的头文件,且无法得知xxx.so里面具体的函数实现。

Cxx库只能使用Julia1.3版本以下,暂不考虑。
请问是使用BinaryBuilder.jl库还是CxxWrap.jl库来实现julia调用c++。

  • CxxWrap.jl 分为两部分:一部分是在 C++ 侧基于源代码给出一个封装,另一部分是在 Julia 侧调用 CxxWrap给好的封装。只有 .so 和 .h 的情况下没办法做到。
  • BinaryBuilder 的作用是将 CxxWrap 的整个C++封装过程打包成 artifacts。跟 CxxWrap 属于不同阶段的工具。

这个 xxx.so 暴露的接口(头文件)用 template 用的多么?如果不多,可以自己写一个C89的 wrapper,然后在 Julia 里用 ccall 调是最简单的方式了。

1 个赞

正常调接口是可以的。

感谢指导。CxxWrap.jl文档提及类似于 Boost.Python,其他Python调用C++工具有Swig,pybind11。不知能否借鉴封装。

这种库如果API不多的话,写个C wrapper+用Clang.jl自动生成ccall 和用CxxWrap封工作量其实区别不大。

感谢解惑~ :rose: