Skip to content

unable to load shared object - opencv

9 messages · niandra, Dirk Eddelbuettel, gianluca mastrantonio +1 more

#
Hi all

i'm trying to use the opencv's function into R.

i wrote a simple script, just for try to understand how use c++ in R, it
loads an image and write it with a different name (i know it ), and then
write "Hello, World". The file is names prova2.cpp (is the first time i try
to use c++ )

#include <stdio.h>
#include <opencv/cv.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv/highgui.h>
#include <opencv/cv.h> 
#include <R.h>
#include <Rinternals.h>

extern "C" SEXP provaR(void) {
cv::Mat gravit;
gravit=cv::imread("imm.jpg");
cv::imwrite("imm_dop.jpg",gravit);
Rprintf("Hello, World!nn");
return R_NilValue;
}

Now in the terminal  i type R CMD SHLIB  prova2.cpp to create the file
prova2.so and this happen without error.

In R i type dyn.load("prova2.so") and get this error:

Errore in dyn.load("prova2.so") : 
  unable to load shared object
'/Users/niandra/Desktop/statistico/r/builtpack/ProvaScript/prova2.so':
 
dlopen(/Users/niandra/Desktop/statistico/r/builtpack/ProvaScript/prova2.so,
6): Symbol not found: __ZN2cv11_InputArrayC1ERKNS_3MatE
  Referenced from:
/Users/niandra/Desktop/statistico/r/builtpack/ProvaScript/prova2.so
  Expected in: flat namespace
 in /Users/niandra/Desktop/statistico/r/builtpack/ProvaScript/prova2.so

I understand that the problem is because i should tell R where to find the
opencv library, but i really don't know how do it.








--
View this message in context: http://r.789695.n4.nabble.com/unable-to-load-shared-object-opencv-tp4648958.html
Sent from the R devel mailing list archive at Nabble.com.
#
On Nov 8, 2012, at 3:19 PM, niandra wrote:

            
add the necessary -l flags (see your configuration or pkgconfig) to R CMD SHLIB

Cheers,
S
#
Sorry but i'm really a beginner.

If when i use opencv with Xcode i need to set the following path 
/System/Library/Frameworks
/usr/local/include
/usr/local/lib 

how can i specify this in  R CMD SHLIB?



--
View this message in context: http://r.789695.n4.nabble.com/unable-to-load-shared-object-opencv-tp4648958p4648960.html
Sent from the R devel mailing list archive at Nabble.com.
#
Edit

i try to use this comman in terminal:
R CMD SHLIB  prova2.cpp -l/usr/local/lib -l/usr/local/include
-l/System/Library/Frameworks  and gave me this error

g++ -arch x86_64 -dynamiclib -Wl,-headerpad_max_install_names -undefined
dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -o
prova2.so prova2.o -l/usr/local/lib -l/usr/local/include
-l/System/Library/Frameworks -F/Library/Frameworks/R.framework/.. -framework
R -Wl,-framework -Wl,CoreFoundation
ld: library not found for -l/usr/local/lib
collect2: ld returned 1 exit status
make: *** [prova2.so] Error 1

Then when i use dyn.load("prova2.so") i get 

Errore in dyn.load("prova2.so") : 
  unable to load shared object
'/Users/niandra/Desktop/statistico/r/builtpack/ProvaScript/prova2.so':
 
dlopen(/Users/niandra/Desktop/statistico/r/builtpack/ProvaScript/prova2.so,
6): image not found



--
View this message in context: http://r.789695.n4.nabble.com/unable-to-load-shared-object-opencv-tp4648958p4648963.html
Sent from the R devel mailing list archive at Nabble.com.
#
On 8 November 2012 at 12:53, niandra wrote:
| Edit
| 
| i try to use this comman in terminal:
| R CMD SHLIB  prova2.cpp -l/usr/local/lib -l/usr/local/include
| -l/System/Library/Frameworks  and gave me this error

You may want to go back to some introduction to Unix and its toolchains and
revisit the differences between

    -I

    -L

    -l

They may look the same, especially with a typewriter font, but trust me that
they are not.

Dirk
#
Yes i know, i need to study.

i'm trying to understand all this stuff, i never use c++ or Unix.
G.M.


Il giorno 08/nov/2012, alle ore 22:58, Dirk Eddelbuettel <edd at debian.org> ha scritto:
#
On Nov 8, 2012, at 3:34 PM, niandra wrote:

            
Those are essentially default so no need to specify any of those. The real thing you need to specify are the actual libraries to link against, typically something like -lopencv_core ... If you use a framework it may be just something like -framework OpenCV - we don't know since you didn't tell us what your'e really using.
#
Ok, sorry.

I need the library libopencv_core.2.4.0.dylib and libopencv_highgui.2.4.0.dylib.

Thanks
G.M.



Il giorno 09/nov/2012, alle ore 01:09, Simon Urbanek <simon.urbanek at r-project.org> ha scritto:
#
Thanks to all, now this problem is solved

G.M.


Il giorno 09/nov/2012, alle ore 01:09, Simon Urbanek <simon.urbanek at r-project.org> ha scritto: