zu nennen Tring habe ich eine C++ Funktion „file1.cpp“ genannt, die wie folgt aussieht:Fataler Fehler bei C++ Funktion von R
#include <cmath>
#include <stdio.h>
#include <RcppArmadillo.h>
#include <boost/math/special_functions/gamma.hpp>
#include <mpi.h>
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
using namespace std;
using namespace arma;
using namespace boost::math;
const double PIVAL = std::acos(0.0)*2;
class function1
{
...
}
extern "C"
void functin2
{
...
}
ich es von einer R-Funktion anrufen möchten. Um das zu tun, dass ich brauchte, um es zu kompilieren zuerst den „file1.so“ zu bekommen, die ich später in dem R-Befehl verwenden kann:
dyn.load("file1.so.so")
So 16.10 Terminal es ubuntu Ich schrieb:
$ R CMD SHLIB file1.cpp -O2 -larmadillo -llapack -lblas
, wenn ich mir die Eingabetaste drücke die follwing Fehlermeldung:
g++ -I/usr/share/R/include -DNDEBUG -fpic -g -O2 -fdebug-prefix-map=/build/r-base-rAT5Oi/r-base-3.3.1=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c file1.cpp -o file1.o
file1.cpp:12:81: fatal error: RcppArmadillo.h: No such file or directory
#include <RcppArmadillo.h>
ich konnte nicht Lösung für diesen Fehler finden. Also habe ich versucht, die C++ Funktion von Rstudio aus aufzurufen. Ich schrieb die follwing Befehle:
library(Rcpp)
library(RcppArmadillo)
sourceCpp("file1.cpp")
function2()
Wenn es die Ausführung Ich werde diesen Fehler:
file1.cpp:11:81: fatal error: RcppArmadillo.h: No such file or directory
jemand eine Idee haben, wie es zu lösen? Danke im Voraus.
Mit besten Grüßen,
Es funktioniert wie Magie. Danke Dirk. Ich habe viele Tage damit verbracht, es herauszufinden. Allerdings werde ich einen neuen Fehler erhalten: fataler Fehler: boost/math/special_functions/gamma.hpp: Keine solche Datei oder Verzeichnis #include –
emadalamoudi
Lesen Sie auf dem BH-Paket und studieren Pakete mit ihm. Kann so einfach sein wie das Hinzufügen eines einzelnen LinkingTo. Und, wenn ich darf, ** auch in der Rcpp Gallery ** deutlich erklärt. Versuchen Sie nicht, jedes Rad neu zu erfinden. –
Ich werde Dirk, Vielen Dank für Ihre Hilfe. – emadalamoudi