我有一个C++程序,它解析一个二进制文件并输出一个std::string。我想直接从Julia调用这个函数,并将steam转换为DataFrame。我需要它在Linux和Windows中工作。目前,我让程序将输出写入一个文本文件,然后将其读入Julia。Cxx不再受支持,试图让CxxWrap工作一直是一个令人沮丧的练习。
玩具问题:如果有人能告诉我如何从Julia调用下面的代码,那就太棒了。
// the example from https://github.com/JuliaInterop/CxxWrap.jl
#include <string>
std::string greet()
{
return "hello, world";
}
2条答案
按热度按时间kcugc4gi1#
虽然这是一个旧的线程,我昨天刚刚进行了这个练习,所以我在这里分享我的解决方案。这在Linux系统上的Julia/1.8.4、cmake/3.11.1和gcc/12.1.0上进行了测试。
第0步
我用CxxWrap.jl。首先,我必须在its github instructions之后创建一个
libcxxwrap_julia_jll
JLL库。完成后,我得到了一个新文件夹~/.julia/dev/libcxxwrap_julia_jll/override
第一步
创建
hello.cpp
文件:CMakeLists.txt
文件它们位于同一目录中。
第二步
通过以下方式构建共享库(
.io
)文件:其中
your_path_to_src
是包含hello.cpp
和CMakeList.txt
的目录。步骤三
在Julia中调用Hello World:
显然,所有这些信息都存在于CxxWrap.jl的README文件中。我只是在这里更详细地阐述了一下。
iqjalb3h2#
这里有一个新的包可能适合您的需求:
https://github.com/eschnett/CxxInterface.jl
它是作为
Cxx.jl
的继任者,而且更稳定,所以我建议早点给它,尽管我自己还没有试过!