gpt4 book ai didi

c++ - Rcpp C/C++ 使用结构和 char*

转载 作者:太空狗 更新时间:2023-10-29 21:01:10 25 4
gpt4 key购买 nike

C/C++ 和 Rcpp 新手。

我目前正在尝试修改我找到的示例(在本例中我修改了“yada”模块示例 http://cran.r-project.org/web/packages/Rcpp/vignettes/Rcpp-modules.pdf)并扩展它们以测试我的理解。

我目前编译的示例没有预期的行为。我猜我遗漏了什么,但我无法确定我在文档中找到的遗漏了什么。任何帮助将不胜感激。

示例代码如下。

library(inline)
fx=cxxfunction(,plugin="Rcpp",include='#include<Rcpp.h>
#include<string>

typedef struct containerForChars {const char *b;} containChar;

containChar cC;

const char* toConstChar(std::string s){return s.c_str();}

void setB(std::string s){
cC.b = toConstChar(s);
}

std::string getB(void){
std::string cs = cC.b;
return cs;
}
RCPP_MODULE(ex1){
using namespace Rcpp;
function("setB",&getB);
function("getB",&getB);
}')
mod=Module("ex1",getDynLib(fx))
f<-mod$setB
g<-mod$getB
f("asdf")
g()

不是 f("asdf")cC.b 设置为 "asdf",而是出现以下错误,

Error in f("asdf") : unused argument ("asdf")

我希望 f() 的 arg 将被设置为 cC.b 的值,而 g() 将检索或获取我使用 f 设置的值。我的猜测是无论 Module 和 RCPP_MODULE 做什么魔法都无法使用我定义的结构。我猜希望它能起作用还不够 :P。

最佳答案

常见的错字。而不是

 function("setB",&getB);
function("getB",&getB);

 function("setB",&setB);     # set, not get
function("getB",&getB);

然后一切正常:

R> f("asdf")    
R> g()
[1] "asdf"
R>

我还会在顶部添加 library(inline)

关于c++ - Rcpp C/C++ 使用结构和 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19366150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com