It was the cross-compiler problem. It worked when I compiled it using mignw-w64 compilers.
Thanks! Kaela On Wed, Jun 22, 2016 at 8:06 PM, Tony Kelman <[email protected]> wrote: > Most likely you're missing one of the dependency dll's (or Julia can't > find it). Check in Dependency Walker and/or cygcheck to see which it is - > probably the libgfortran dll. Also note that since Julia itself is built > using mingw-w64 compilers, trying to load libraries built by the standard > cygwin compilers may be unreliable. You can install the cross-compiler > package mingw64-x86_64-gcc-fortran from Cygwin's setup.exe, then invoke > x86_64-w64-mingw32-gfortran rather than just gfortran and you'll get a dll > that is more likely to be compatible with Julia. > > > > On Wednesday, June 22, 2016 at 5:45:49 PM UTC-4, Kaela Martin wrote: >> >> I'm trying to get Julia to run a Fortran file on Windows 10, and Julia >> says that it can't open the library. Libdl.dlopen also fails to open the >> file. I've tried adding the current path to LOAD_PATH but still get the >> same error. >> >> For a test case, I'm running the following module: >> >> module hello_module >> use iso_c_binding >> implicit none >> contains >> >> subroutine hello() bind(C,name="hello") >> !DEC$ ATTRIBUTES DLLEXPORT :: hello >> write(*,'(A)') "Hello World!!!" >> end subroutine hello >> >> end module hello_module >> >> I'm compiling it in Cygwin64 (I'm on a 64bit Windows 10 machine) using >> gfortran with: >> >> gfortran -shared -o2 -fPIC Hello.f90 -o HelloWorld.dll >> >> I get a warning that -fPIC is ignored, but the file compiles and creates >> HelloWorld.dll >> >> In Julia, I call the library using >> >> ccall((:hello,"HelloWorld.dll"),Void,()) >> >> which results in: >> >> ERROR: could not load library "HelloWorld.dll" >> The specified module could not be found. >> >> in dlopen at libdl.jl:36 (repeats 2 times) >> in dlopen at deprecated.jl:32 >> >> Just trying to open the module using Libdl.dlopen("HelloWorld.dll") >> gives the same error. >> >> Note that I moved the .dll file to a new location after compiling it >> since the goal is to put the code in a single folder that other users can >> put on their windows machines and run. >> >> How do I get Julia to open and run the code? >> >> Thanks, >> Kaela >> >
