如何在c中使用julia语言(visual studio)

前端之家收集整理的这篇文章主要介绍了如何在c中使用julia语言(visual studio)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在c中使用julia语言?
julia语言是否提供了一些库?

现在,我正试图在我的c项目中使用julia语言的一些功能.
这可能吗?我能做什么?

提前致谢.

解决方法

嵌入朱莉娅

是的Julia可以嵌入到Julia本身可用的所有平台上的C或C程序中,并且在所有情况下通用方法都是相同的,但特别是Windows中的嵌入更加困难,因为目前编译/嵌入的框架(gcc)不是该平台(MSVC)的默认熟悉的一个.原因是Julia是使用gcc而不是MSVC在Windows上构建的.

高水平

在高层次上,嵌入Julia的步骤包括使用Julia发行版提供的资源进行编译(见下文),然后初始化程序以启动Julia引擎.

包括julia.h

c或c程序的所有必要定义都位于julia.h中.它的确切位置因每个分布而异,但一般来说它位于julia-basedir / include中.

链接到libjulia

同样,嵌入朱莉娅的所有必要符号都位于libjulia中.在OS / X和Linux上libjulia.so通常在julia-basedir / julia / lib中可用,而在Windows上libjulia.dll将是julia-basedir / julia / bin.

或者可选地在0.4中:使用julia-config.jl

前面可能听起来很混乱,但幸运的是,最新的Julia 0.4发行版中包含一个名为julia-config.jl的脚本,它将自动提供所有需要的编译器标志 – 免责声明我写的.在这种情况下,您需要做的就是剪切和粘贴并遵循文档中的模式,创建一个Makefile,make将负责其余的工作.

使用jl_init初始化

in the docs所述,使用jl_init启动Julia运行时,同时可选地指定Julia编译的基本支持sys.ji所在的目录.我发现最好直接指定它而不是默认; julia-config.jl还提供-DJL_INIT_DIR,可以盲目地用作jl_init的参数;文档提供了详细信息.

Windows的问题

回到Windows.如果按照compiling Julia in Windows的说明进行操作,最终将得到MSYS2编译环境.请注意,这些说明有些过时,MSYS2从那时起已经发展,因此现在更简单(例如,不需要使用7-zip).顺便说一句,这也允许你获得git directly – 注意@ ntzrmtthihu777的最后一个评论现在是最好的,因为git通过MSYS2优于git-bash,它基于旧的MSYS.

GCC

现在MSYS2确实提供了一个gcc,但是你不能使用它,因为它隐含地使用了与Julia(Winthreads)使用的线程模型(POSIX)不同的线程模型,而你必须从mingw-builds获得gcc,这样你就可以选择在安装过程中选择模型;这也是Julia编译窗口自述文件所指出的,但它需要重复.其他工具可以从MSYS2包管理器pacman获得.

Mingw build提供了一个安装程序,我发现以下fstab足以使mingw-builds gcc在正确的位置可用:

none / cygdrive binary,posix=0,noacl,user 0 0

c:/mingw-w64/x86_64-4.9.2-win32-seh-rt_v3-rev1/mingw64 /mingw64 ntfs binary,auto 0 0

超越

如果您成功创建了一个适合从源代码编译Julia的编译环境 – 您可以通过实际编译Julia来验证这一点 – 那么上面的说明包括julia-config.jl / Makefile简化将起作用,并将生成一个嵌入的程序Julia将是一个.exe,即使在MSYS2之外调用也会工作,这很好.

但是如果你想直接使用MSVC,那么我应该警告你,Julia与MSVC的编译仍处于早期阶段,所以上面用MSVC代替gcc的方法目前还不行,但是libjulia有可能被联系到;预计至少libraries created by mingw are usable by MSVC.

更新了MSVC编译(创建julialib.lib)

libjulia.dll是包含嵌入Julia所需的所有符号的库,此外,虽然它是由gcc创建的,但它可以被MSVC使用,因为所有这些符号都有C命名,并且不是C名称错位.但是,它不能直接使用,但需要创建.lib.这可以通过以下方式完成.

创建julialib.lib

>使用dumpbin将符号从dll导出到文件中,例如:

dumpbin / exports libjulia.dll>产量
>将输出转换为.def文件,方法删除无关文本并将EXPORTS置于最顶层,详见here
>使用lib从.def创建.lib.

lib /def:libjulia.def /out:libjulia.lib / machine:x64>将libjulia.lib放在与libjulia.dll相同的目录中>通过包含julia.h并链接到libjulia.lib来构建项目

猜你在找的C&C++相关文章