CxxWrap使用(windows+julia中调用C++库)

记录一下windows平台中,使用vs2022+julia实现在julia中调用c++库的全流程。
julia调用c++库主要有两种方案:Cxx.jl和CxxWrap.jl,两者都可以在github中找到对应项目。它们之间的区别在于:Cxx.jl需要在julia端构建接口,而CxxWrap.jl则完全在c++端构建接口。由于Cxx.jl依赖项LLVM有版本依赖问题,一直编译不通过,所以采用CxxWrap方案:CxxWrap地址。参考链接地址中的README,下面是具体流程:

1. julia的预先处理:

1.1 在julia终端的pkg中运行add CxxWrap(julia终端中键入]可进入包管理模块)

pkg> add CxxWrap

1.2 编译libcxxwrap-julia项目前的处理:libcxxwrap-julia地址

说明:julia的CxxWrap模块是依赖于libcxxwrap-julia才可以运行的。在该项目的README中可以发现该库有预编译的版本,但是是基于gcc编译器的,所以我们需要下载源码,用cmake进行项目构建,然后自己在vs中编译该项目。但是在构建该项目之前,我们需要在julia里面做一些处理,把默认的版本代码删除,具体步骤如下:

  • 在julia终端中输入(注意第一个命令是在包管理模块):
pkg> develop libcxxwrap_julia_jl
julia> import libcxxwrap_julia_jll
julia> libcxxwrap_julia_jll.dev_jll()

在这里插入图片描述

  • 运行2.1命令后,如图中红色框所示为libcxxwrap_julia_jll的地址,进入该目录后,可以发现有一个override子文件夹,我们需要子文件夹override的内容全部删除,然后将该目录作为cmake项目生成目录,替换成自己的内容。

2.使用cmake构建项目

2.1 下载源码

2.2 打开cmake-gui

  • 源码路径设置为下载代码的路径,生成路径为步骤1中的override子文件夹
  • 在cmake中添加变量Julia_PREFIX,该路径为julia的地址,请注意一定要和你需要使用的julia版本一致。你可以在你的电脑上搜索julia.exe,然后其上一级目录就是该路径(其中包含bin,include等一系列文件夹)
    在这里插入图片描述
  • Configure+Generete

3.使用Visual Studio编译项目

3.1 编译

  • 打开ALL_BUILD的属性,确保使用C++17版本:配置属性-常规-c语言标准
  • 完成编译后,右键INSTALL项目-生成。(如果提示set_local项目。退出VS后,使用管理员模式打开VS)

3.2 进行测试

  • 新建一个vs工程,注意改成c++17标准
  • 项目包含目录添加JLCxx安装位置的include
  • 46
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骨骼建模师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值