Ошибка нарушения доступа к исключению при выполнении кода C на языке программирования Julia
Я использую пример кода из JuliaAcademy (https://github.com/JuliaAcademy).
Я пытаюсь запустить код C из Джулии. Я использую 64-разрядную версию Windows 10, на моем компьютере установлен gcc и Atom IDE для запуска Julia.
Вот фрагмент кода, который я запускаю:
using Libdl
C_code = """
#include <stddef.h>
double c_sum(size_t n, double *X) {
double s = 0.0;
for (size_t i = 0; i < n; ++i) {
s += X[i];
}
return s;
}
"""
const Clib = tempname() # make a temporary file
# compile to a shared library by piping C_code to gcc
# (works only if you have gcc installed):
open(`gcc -fPIC -O3 -msse3 -xc -shared -o $(Clib * "." * Libdl.dlext) -`, "w") do f
print(f, C_code)
end
# define a Julia function that calls the C function:
c_sum(X::Array{Float64}) = ccall(("c_sum", Clib), Float64, (Csize_t, Ptr{Float64}), length(X), X)
a = rand(10^7)
c_sum(a)
команда opengcc выполняется, и каждая строка кода работает нормально до последней строки, когда я вызываю c_sum(a).
Как только я вызываю функцию c_sum(), Джулия выходит и выдает следующее сообщение об ошибке:
Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x88804 -- unknown function (ip: 0000000000088804)
in expression starting at D:\Documents\Julia Projects\benchmarking.jl:67
unknown function (ip: 0000000000088804)
Allocations: 50200883 (Pool: 50186825; Big: 14058); GC: 46
Я думаю, что возможность запускать и выполнять функции C из Джулии очень полезна, поэтому я хотел бы иметь рабочий пример на своем компьютере.
Кто-нибудь может мне с этим помочь? Может быть, дело в том, что я использую ПК с Windows? Прошло некоторое время с тех пор, как я установил gcc на свой компьютер с Windows. Должен ли приведенный выше код работать с gcc, установленным через MingGW или CygWin? Или Джулия предполагает, что машина, на которой вы работаете, — это Unix/Linux?