1

次のC++コードを使用しています

using namespace std;

#include <iostream>    
#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>    
#include <Rmath.h>

extern "C" { 
SEXP FiltroGaus(SEXP size1_r, SEXP size2_r, SEXP sigma_r) { 

    int size1 = INTEGER(size1_r)[0]; 
    int size2 = INTEGER(size2_r)[0]; 
    double sigma = REAL(sigma_r)[0]; 

} 
} 

これはエラーなしでコンパイルされますが、RI タイプ .C("FiltroGaus",3,3,2)の場合、メッセージは次のとおり Errore: INTEGER() can only be applied to a 'integer', not a 'NULL'です。
入力した場合.C("FiltroGaus",as.integer(3),as.integer(3),as.double(2))メッセージはErrore: INTEGER() can only be applied to a 'integer', not a 'closure'. メッセージ
を入力すると、次のようになります。.Call("FiltroGaus",as.integer(3),as.integer(3),as.double(2))

NULL     
 *** caught segfault ***     
address 0x200000be, cause 'memory not mapped'     
Possible actions: 
1: abort (with core dump, if enabled)     
2: normal R exit     
3: exit R without saving workspace     
4: exit R saving workspace 
4

0 に答える 0