copying the libgomp.dll into my working directory worked! Thanks!
Am Mittwoch, 20. Januar 2016 03:36:54 UTC+1 schrieb Tony Kelman: > > Take a look at the libcspline3.dll in Dependency Walker. You're likely > missing a libgomp dll which you'll need to copy from your compiler > installation and put it next to libcspline3.dll. Where did you install the > gcc compiler from and are you calling it from inside an environment like > cygwin or msys[2]? > > > On Tuesday, January 19, 2016 at 4:15:45 PM UTC-8, > [email protected] wrote: >> >> >> >> Hi, >> >> >> I am trying to call C code from Julia.It works for 'regular' C code but >> now I have code that (potentially) uses OpenMP which causes trouble. I am >> trying to interpolate a function using a spline approximation. In short, if >> I type: >> >> gcc -shared -O3 nspline_omp.c -o libcspline.dll -ffast-math >> >> >> and then call one of the functions in the library from Julia using ccall, >> it works. But judging from the speed and comparison with other languages, >> only 1 thread is used. The code certainly supports multi-threading, for a >> my friend of mine on his Mac, it worked. If I type: >> >> gcc -shared -O3 nspline_omp.c -o libcspline2.dll -ffast-math -fopenmp >> >> iand try to call it from Julia, it doesn't work anymore, in particular: >> >> LoadError: error compiling spline: could not load library "libcspline2.dll" >> The specified module could not be found. >> >> >> Libdl.dlopen("libcspline2.dll") >> >> gives the same error. As an example, consider: >> >> #include<omp.h> >> >> int banana(int hello) { >> int nt; >> #pragma omp parallel >> { >> nt = omp_get_num_threads(); >> } >> return nt; >> } >> >> >> #include <stdio.h> >> int main() { printf("%d\n", banana(12)); } >> >> >> which perfectly works when compiled as .exe (gcc helloworld.c -fopenmp). >> When I try to compile >> >> #include <stdlib.h> >> #include <omp.h> >> >> int banana(int hello) { >> int nt; >> #pragma omp parallel >> { >> nt = omp_get_num_threads(); >> } >> return nt; >> } >> >> as a shared library using >> >> gcc -shared -O3 helloworld2.c -o libcpsline3.dll -ffast-math -fopenmp >> >> and then in Julia: >> >> Libdl.dlopen("libcspline3.dll") >> LoadError: could not load library "libcspline3.dll" >> The specified module could not be found. >> >> >> Finally, I am new to Julia and C and basically I have not much of an idea >> what I am doing, so it could be an obvious mistake. Thanks for your help. >> >> >> >>
