尝试在c++中嵌入julia遇到一个有点奇怪的错误


我按照文档中提示的方法进行在vs2017中嵌入julia的操作,然后遇到了如下提示:一元负运算符应用于无符号类型,结果仍为无符号类型,这个问题该怎么解决?我用的julia版本是1.3.1以及0.6,两个都用过,都是同样的问题


找到了一个简单粗暴的办法,直接改成 return 0……然而直觉让我觉得这肯定不是个好办法……


找到了一个解决的办法,用低版本的vs2010。但是随后又遇到了新的问题
在执行函数jl_init();的时候,遇到了如下问题


无法解析的符号


找到问题所在,我的vs2010只有32位版本,而我的julia是64位版本。我现在只能用vs2017(因为只有它有64位版本)来编译,但必须克服

的问题……我现在只能强制修改源文件return 0 但这可能不是个好主意……毕竟在我知道源文件到底是做什么的之前,我并不想鲁莽的进行(虽然暂时有效果的)修改
image
现在我的确可以得到一些有意义的结果,但代价是对源文件进行了一些我未知后果的改动……

必须用vc吗,没特殊需求的话建议WSL下用linux

1 个赞

非常感谢大家的帮助,问题现在已经圆满解决了,只要在VS中关掉SDL检查就可以了

现在我遇到的一个新的问题是,我在VS中嵌入julia的时候,以前add的包全都失效了。可以在VS嵌入的julia中重新add,然后可以正常使用,但一些包因为网络问题是add不下来的。
现在就是想问以前add下来的包为什么不能在嵌入vs的julia中使用,必须重新add?有没有办法在嵌入vs的julia中使用以前在julia本体上已经add下来的包?

设置 JULIA_DEPOT_PATHEnvironment Variables · The Julia Language

这个没设置过,谢谢大佬提醒 :rofl:我应该把他添加到系统环境变量里吗

仔细看了一下文档 应该是添加到环境变量和在julia中添加到EVN里都可以,是吧,,

可以先临时在命令行试试

我试过在系统环境变量中设置以及在julia的ENV中设置了,通过调用print(ENV[JULIA_DEPOT_PATH])也知道ENV也设置成功了,但是仍然无效,解决不了在VS中嵌入的julia无法加载以前下载的包的问题,,,


乱七八糟调试了一大堆,最后成功的话应该额外显示“Gray”四个字符,但是现在没有
作为对比,这是我直接用julia本体写的代码
image



通过工具Everything强行找到了在VS下嵌入的julia的新的库的位置……通过重命名的方法发现果然使VS中的julia失效了,julia本体则不受影响。划线部分中原来的“load”四个字符现在已经没有了,说明之前在VS中add的包的确因为重命名失效了
而下面剩下的那个包,显然是julia本体使用的,我后来又把它重命名了一下试验,结果果然这次是julia本体的FileIO失效了。