小编gom*_*mfy的帖子

如何创建依赖于Rcpp共享库的R包?

我有一个libbcd.soC源代码生成的共享库。我也有一些接口代码Rinterface.h, Rinterface.cpp,如下所示:

Rinterface.h

#pragma once

#include <R.h>
#include <Rcpp.h>
extern "C" {
#include "bcd.h"
}

void call_bcd();
Run Code Online (Sandbox Code Playgroud)

Rinterface.cpp

#include "Rinterface.h"

// [[Rcpp::export]]
void call_bcd() {
    mm_problem* pr = mm_problem_alloc();
    bcd_vars* vars = bcd_vars_alloc();
    bcd(pr, vars);
}
Run Code Online (Sandbox Code Playgroud)

mm_problem_alloc(), bcd_vars_alloc(), bcd(mm_problem*, bcd_vars*)来自所有功能libbcd.so,并mm_problembcd_vars来自用户定义的类型libbcd.so

我创建了一个包,其中Rcpp.package.skeleton("bcd")将带有以下MakevarsRinterface文件放在src文件夹下

PKG_CPPFLAGS=-I/usr/local/lib/R/site-library/Rcpp/include/ -I/path/to/bcd/headers/
PKG_LIBS=-L/path/to/bcd/library/file -lbcd
Run Code Online (Sandbox Code Playgroud)
  • 我可以使用创建接口库 R CMD SHLIB Rinterface.cpp
  • 我也可以用 R CMD build . …

c dll r rcpp

1
推荐指数
1
解决办法
49
查看次数

重载赋值运算符以指向两个不同的类

我的问题:我正在尝试重写赋值运算符以指向两个不同的类.这是一个例子:

dc.h:

#ifndef DC_H_
#define DC_H_

#include "ic.h"

class dc {

double d;
char c;

public:

dc(): d(0), c(0) { }

dc(double d_, char c_): d(d_), c(c_) { }

dc* operator=(const ic* rhs);

~dc() { }

};

#endif /* DC_H_ */
Run Code Online (Sandbox Code Playgroud)

class ic.h:

#ifndef IC_H_
#define IC_H_

class ic {

int i;
char c;

public:

ic(): i(0), c(0) { }

ic(int i_, char c_): i(i_), c(c_) { }

~ic() { }

};

#endif /* IC_H_ */
Run Code Online (Sandbox Code Playgroud)

dc.cpp:

#include "dc.h"

dc* …
Run Code Online (Sandbox Code Playgroud)

c++ overloading variable-assignment operator-keyword

0
推荐指数
1
解决办法
4327
查看次数

标签 统计

c ×1

c++ ×1

dll ×1

operator-keyword ×1

overloading ×1

r ×1

rcpp ×1

variable-assignment ×1