armgong / rjulia

R package which integrating R and Julia
GNU General Public License v2.0
146 stars 23 forks source link

undefined reference to `__imp_jl_tls_states #49

Closed jdavidm closed 7 years ago

jdavidm commented 7 years ago

I am trying to install rjulia0.5 on my machine. I am using julia 0.5.0, R 3.3.2, and RStudio 1.0.44. I get the following error.

achetverikov commented 7 years ago

Same happened to me:

* installing *source* package 'rjulia' ...
** libs
C:/Rtools/mingw_64/bin/gcc -m64 -I"D:/MRO-33~1.2/include" -DNDEBUG -I"D:\\Julia-0.5.0\\bin"/../../src -I"D:\\Julia-0.5.0\\bin"/../../src/support -I"D:\\Julia-0.5.0\\bin"/../include -I"D:\\Julia-0.5.0\\bin"/../include/julia -D_WIN32_WINNT=0x0600    -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include"     -O2 -Wall  -std=gnu99 -mtune=core2 -c Julia_R.c -o Julia_R.o
In file included from Julia_R.c:10:0:
Julia_R.c: In function 'juliaArrayToSEXP':
D:/MRO-33~1.2/include/Rinternals.h:662:20: warning: 'type' may be used uninitialized in this function [-Wmaybe-uninitialized]
 #define PROTECT(s) Rf_protect(s)
                    ^
Julia_R.c:22:12: note: 'type' was declared here
   SEXPTYPE type;
            ^
C:/Rtools/mingw_64/bin/gcc -m64 -I"D:/MRO-33~1.2/include" -DNDEBUG -I"D:\\Julia-0.5.0\\bin"/../../src -I"D:\\Julia-0.5.0\\bin"/../../src/support -I"D:\\Julia-0.5.0\\bin"/../include -I"D:\\Julia-0.5.0\\bin"/../include/julia -D_WIN32_WINNT=0x0600    -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include"     -O2 -Wall  -std=gnu99 -mtune=core2 -c R_Julia.c -o R_Julia.o
C:/Rtools/mingw_64/bin/gcc -m64 -I"D:/MRO-33~1.2/include" -DNDEBUG -I"D:\\Julia-0.5.0\\bin"/../../src -I"D:\\Julia-0.5.0\\bin"/../../src/support -I"D:\\Julia-0.5.0\\bin"/../include -I"D:\\Julia-0.5.0\\bin"/../include/julia -D_WIN32_WINNT=0x0600    -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include"     -O2 -Wall  -std=gnu99 -mtune=core2 -c dataframe.c -o dataframe.o
C:/Rtools/mingw_64/bin/gcc -m64 -I"D:/MRO-33~1.2/include" -DNDEBUG -I"D:\\Julia-0.5.0\\bin"/../../src -I"D:\\Julia-0.5.0\\bin"/../../src/support -I"D:\\Julia-0.5.0\\bin"/../include -I"D:\\Julia-0.5.0\\bin"/../include/julia -D_WIN32_WINNT=0x0600    -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include"     -O2 -Wall  -std=gnu99 -mtune=core2 -c embedding.c -o embedding.o
C:/Rtools/mingw_64/bin/gcc -m64 -shared -s -static-libgcc -o rjulia.dll tmp.def Julia_R.o R_Julia.o dataframe.o embedding.o -LD:\Julia-0.5.0\bin -ljulia -LC:/swarm/workspace/External-R-3.3.2/vendor/extsoft/lib/x64 -LC:/swarm/workspace/External-R-3.3.2/vendor/extsoft/lib -LD:/MRO-33~1.2/bin/x64 -lR
Julia_R.o:Julia_R.c:(.text+0x721): undefined reference to `__imp_jl_tls_states'
Julia_R.o:Julia_R.c:(.text+0x916): undefined reference to `__imp_jl_tls_states'
Julia_R.o:Julia_R.c:(.text+0x1092): undefined reference to `__imp_jl_tls_states'
Julia_R.o:Julia_R.c:(.text+0x10a5): undefined reference to `__imp_jl_tls_states'
Julia_R.o:Julia_R.c:(.text+0x1252): undefined reference to `__imp_jl_tls_states'
Julia_R.o:Julia_R.c:(.text+0x1261): more undefined references to `__imp_jl_tls_states' follow
collect2.exe: error: ld returned 1 exit status
no DLL was created
ERROR: compilation failed for package 'rjulia'
* removing 'D:/MRO-3.3.2/library/rjulia'
armgong commented 7 years ago

this is julia 0.5 issue ,need add one line

define JULIA_ENABLE_THREADING 0 //or 1??

before include julia.h

bgeorgio commented 7 years ago

In which files of the rjulia package should I include the "define" statement that you mentioned?

armgong commented 7 years ago

embedding.c

phaverty commented 7 years ago

This is handled by our Makevars file now, which uses the example from julialang's embedding docs. This fix is in our julia0.5 and julia0.6 branches.