Error in inDL(x, as.logical(local), as.logical(now), ...) : unable to load shared object

Moody_Mudskipper picture Moody_Mudskipper · Sep 3, 2018 · Viewed 12.7k times · Source

I'm having this error when trying to attach package tidyselect and when trying to call tidyselect::any_function.

The error happens in Rstudio or command line alike, in RStudio it is triggered as soon as I type: tidyselect:: , though ?tidyselect:: works fine and I can call the help of ?tidyselect::any_function.

This also works:

packageVersion("tidyselect") # [1] ‘0.2.4

It used to work, and I don't understand what changed, I just know package rjava has been installed, the admins might also have changed something.

First a popup says:

The procedure entry point R_ContinueUnwind could not be located in the dynamic link library R.dll

Then an Error is displayed in the console :

Error in inDL(x, as.logical(local), as.logical(now), ...) :

unable to load shared object '//edited_UNC_path.com/edited_path/tidyselect/libs/x64/tidyselect.dll':

LoadLibrary failure: The specified procedure could not be found.

The dll file exists :

file.exists('//edited_UNC_path.com/edited_path/tidyselect/libs/x64/tidyselect.dll') # [1] TRUE

config :

sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.3.1

Any idea how I can solve this ?

Answer

Aurelien Chateigner picture Aurelien Chateigner · Mar 31, 2020

I don't know why this event happens as I am currently facing the same problem. Anyways I can explain your solution.

32 vs 64 bits

Your system is 64 bits, as shown in your sessionInfo(). i386 architecture is for the older systems, in 32 bits (they can only handle a limited amount of memory as they use 32 bits memory addresses, while 64 bits systems are, virtually, unlimited today).

What happens in R

A classic installation in R is "multiarch" for multi-architectures, which means 32 and 64 bits. In 64 bits systems there is no problem in building a 32 bits software. However, your may not have all the dependencies (e.g. C++ libraries) installed for both architectures. There is apparently a problem with your 32 bits installation. Then installing the package with INSTALL_opts="--no-multiarch" only installs the 64 bits version (the one you need), without problems.