gpt4 book ai didi

c - 使用 Libdl.dlopen 杀死 Julia

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:23 25 4
gpt4 key购买 nike

我正在尝试从 Julia v0.6.2、Windows 10 调用 C 代码。

这是我用 Cygwin 编译成 DLL 的 C 代码海合会。

int timesTwo(int x) {
return 2*x;
}

编译命令:

gcc -c mydll.c
gcc -shared -o mydll.dll mydll.o

我用测试 C 程序测试了 DLL,它可以工作。然后我尝试使用 DLL 的绝对路径通过 Julia 调用它。

using Base.Libdl
x = Int32(2)
mylib = dlopen("C:\\Users\\pedro\\Documents\\codigos\\exampleDLL\\C\\mydll.dll")
ccall((:timesTwo, mylib), Int32, (Int32,), x)

然后 Julia 的工作区重新启动(所有变量在我使用命令 dlopen 后立即变为未定义)。

发生了什么,我该如何解决?


更新

那肯定是windows的问题。无法在 Ubuntu 发行版中重现。

最佳答案

我会尝试使用 Julia 使用的相同编译器(带有 -fPIcflags)来构建您的 DLL。在 Windows 上,julia 实际上是用Cygwin 到 MinGW 交叉编译器:

https://github.com/JuliaLang/julia/blob/master/README.windows.md#cygwin-to-mingw-cross-compiling

你能安装 mingw64-x86_64-gcc-core 包(仅用于 C 编译器)并使用 x86_64-w64-mingw32-gcc 编译器命令(而不是 gcc)吗?

关于c - 使用 Libdl.dlopen 杀死 Julia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49084874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com