juliamatlab / mexjulia

embedding Julia in the MATLAB process.
MIT License
52 stars 14 forks source link

Unhandled Julia exception: LoadError #16

Closed e-arnold closed 7 years ago

e-arnold commented 7 years ago

Hi, I'm running Matlab 2015b 64-Bit on Windows 7 with MinGW64 gcc and Julia 0.5.0 Jl.build builds mexjulia.mexw64 as expected But boot.jl is not loaded.

Jl.eval('2+2') Error using mexjulia Unhandled Julia exception: LoadError

Error in Jl.check_init (line 55) mexjulia(0, ['include("' boot_file '")']); ...

Jl.eval('2+2') Error using mexjulia Function not found.

twadleigh commented 7 years ago

Errors loading the boot file are inherently opaque, unfortnately, as all of the nice error reporting rely on it having completed successfully.

The thing I would typically do in this case is to open up a julia prompt and and include("boot.jl") there. I would hope you might get some more meaningful error in that case.

e-arnold commented 7 years ago

Yes, the problem seems to come from MATLAB.jl Uint vs. UInt etc

julia> include("boot.jl") ... WARNING: Base.OS_NAME is deprecated. likely near C:\Users\Arnold\HOME.julia\v0.5\MATLAB\src\mxbase.jl:66 in get_paths at C:\Users\Arnold\HOME.julia\v0.5\MATLAB\src\mxbase.jl ERROR: LoadError: LoadError: LoadError: LoadError: UndefVarError: Uint32 not def ined in include_from_node1(::String) at .\loading.jl:488 (repeats 2 times) in eval(::Module, ::Any) at .\boot.jl:234 in require(::Symbol) at .\loading.jl:415 in include_from_node1(::String) at .\loading.jl:488 (repeats 2 times) while loading C:\Users\Arnold\HOME.julia\v0.5\MATLAB\src\mxarray.jl, in express ion starting on line 41 while loading C:\Users\Arnold\HOME.julia\v0.5\MATLAB\src\MATLAB.jl, in expressi on starting on line 37 while loading C:\Users\Arnold\HOME\Julia\mexjulia-rebranding\jl\Mex.jl, in expre ssion starting on line 5 while loading C:\Users\Arnold\HOME\Julia\mexjulia-rebranding\jl\boot.jl, in expr ession starting on line 2

twadleigh commented 7 years ago

Oh, I forgot. It currently only works with MATLAB.jl master. The workaround is to execute:

julia> Pkg.checkout("MATLAB")

The short term fix is to add this command to the build script. The longer term fix, I think, is to steal the data marshaling code that mexjulia depends on from MATLAB.jl and bring it in locally.

e-arnold commented 7 years ago

Everything works fine with MATLAB.jl master. Thank you very much.

twadleigh commented 7 years ago

@e-arnold thanks for testing!