Multiple definition error building RInside samples on Windows 7 x64
===

I'm trying to build rinside_sample1.cpp from RInside\examples\standard directory on Windows 7 x64 using g++ from RTools in the following way:

    set RCPP=%R_HOME%\library\Rcpp
    set RINSIDE=%R_HOME%\library\RInside
    g++ -c -m64 rinside_sample1.cpp -I %RINSIDE%\include -I %RCPP%\include -I %R_HOME%\include
    g++ -m64 rinside_sample1.o -o rinside_sample1.exe -L %RINSIDE%\libs\x64 -l RInside -L %RCPP%\libs\x64 -l Rcpp -L %R_HOME%\bin\x64 -l R

The linkage results into the multiple definition error:

    d000026.o:(.idata$5+0x0): multiple definition of `__imp__ZTVN4Rcpp7RObjectE'
    d000019.o:(.idata$5+0x0): first defined here
    d000026.o:(.idata$6+0x0): multiple definition of `__nm__ZTVN4Rcpp7RObjectE'
    d000019.o:(.idata$6+0x0): first defined here
    collect2: ld returned 1 exit status

**However the similar building process for rinside_sample0.cpp succeedes. Does anyone have an idea of the solution?**

It seems that the problem with rinside_sample1.cpp arises because of Rcpp::NumericMatrix and Rcpp::NumericVector usage.

rinside_sample0.cpp code:

    // -*- mode: C++; c-indent-level: 4; c-basic-offset: 4;  tab-width: 8; -*-
    //
    // Simple example showing how to do the standard 'hello, world' using embedded R
    //
    // Copyright (C) 2009 Dirk Eddelbuettel 
    // Copyright (C) 2010 Dirk Eddelbuettel and Romain Francois
    //
    // GPL'ed 
    
    #include <RInside.h>                    // for the embedded R via RInside
    
    int main(int argc, char *argv[]) {
    
        RInside R(argc, argv);              // create an embedded R instance 
    
        R["txt"] = "Hello, world!\n";	// assign a char* (string) to 'txt'
    
        R.parseEvalQ("cat(txt)");           // eval the init string, ignoring any returns
    
        exit(0);
    }

rinside_sample1.cpp code:

    // -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8; -*-
    //
    // Simple example with data in C++ that is passed to R, processed and a result is extracted
    //
    // Copyright (C) 2009         Dirk Eddelbuettel 
    // Copyright (C) 2010 - 2011  Dirk Eddelbuettel and Romain Francois
    //
    // GPL'ed 
    
    #include <RInside.h>                            // for the embedded R via RInside
    
    Rcpp::NumericMatrix createMatrix(const int n) {
        Rcpp::NumericMatrix M(n,n);
        for (int i=0; i<n; i++) {
            for (int j=0; j<n; j++) {
                M(i,j) = i*10 + j; 
            }
        }
        return(M);
    }
    
    int main(int argc, char *argv[]) {
    
        RInside R(argc, argv);                      // create an embedded R instance 
        
        const int mdim = 4;                         // let the matrices be 4 by 4; create, fill 
        R["M"] = createMatrix(mdim);                // then assign data Matrix to R's 'M' var
    
        std::string str = 
            "cat('Running ls()\n'); print(ls()); "
            "cat('Showing M\n'); print(M); "
            "cat('Showing colSums()\n'); Z <- colSums(M); print(Z); "
            "Z";                     // returns Z
    
        
        Rcpp::NumericVector v = R.parseEval(str);   // eval string, Z then assigned to num. vec              
    
        for (int i=0; i< v.size(); i++) {           // show the result
            std::cout << "In C++ element " << i << " is " << v[i] << std::endl;
        }
        exit(0);
    }

