gpt4 book ai didi

c++ - 在 R 中调用 "multi file C++ code with external libraries referenced"

转载 作者:行者123 更新时间:2023-11-30 03:22:25 32 4
gpt4 key购买 nike

我用 C++ 编写了一个代码,它使用了 boost 库并且还使用了多个文件。我正在尝试执行 R 中的函数。

这是我的 C++ 函数原型(prototype):

extern "C" double function1(double rho, double mu, double limit);

这是我的 R 函数:

dyn.load('path_to_dll\\x64\\Debug\\project.dll') 
.Call("function1", as.double(1.0), mu = as.double(1.0/20.0), limit = as.double(3413.85))

当我调用该函数时,出现以下错误:

Error in .Call("function1", as.double(1), mu = as.double(1/20),  : 
C symbol name "function1" not in load table

我关注了this但没有运气。我哪里错了?

最佳答案

由于这是一个多文件 C++ 项目,您应该将代码打包为 R 包。使用 Rcpp 实际上很容易,参见示例 this answer . Rcpp-package小插图包含更多信息。此外,使用 boost 的简单方法是通过 BH包裹。有许多在 CRAN 上使用 Rcpp + BH 的示例包,您可以学习,例如我自己的dqrng .也可以在 R Packages 中找到更多详细信息书,当然还有官方文档 Writing R Extensions .

使用BH包的关键是LinkingTo: BHDESCRIPTION文件。这确保了 -I<path_to_BH_package>/include是编译器标志的一部分。为了使用您放置在 inst/include 中的头文件, 你应该添加 PKG_CPPFLAGS = -I../inst/includesrc/Makevars .

关于c++ - 在 R 中调用 "multi file C++ code with external libraries referenced",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51155618/

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