Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用;多文件C++;引用外部库的代码“;在R 我在C++中编写了一个代码,使用Boost库,也使用多个文件。我正在尝试执行R中的函数 这是我的C++函数原型: extern "C" double function1(double rho, double mu, double limit);_C++_R - Fatal编程技术网

调用;多文件C++;引用外部库的代码“;在R 我在C++中编写了一个代码,使用Boost库,也使用多个文件。我正在尝试执行R中的函数 这是我的C++函数原型: extern "C" double function1(double rho, double mu, double limit);

调用;多文件C++;引用外部库的代码“;在R 我在C++中编写了一个代码,使用Boost库,也使用多个文件。我正在尝试执行R中的函数 这是我的C++函数原型: extern "C" double function1(double rho, double mu, double limit);,c++,r,C++,R,这是我的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

这是我的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
我跟着
但是没有运气。我哪里出错了?

使用
Rcpp
而不是
。调用

将此标题和注释添加到.cpp函数文件:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]

函数 EuleRealsOs/Cuff>在环境中应该可见,现在可以将其称为任何其他R函数

,因为这是多文件C++项目,应该将代码打包为R包。使用Rcpp实际上非常容易,例如,请参见。小插曲包含进一步的信息。此外,使用
boost
的一个简单方法是通过软件包。有许多在CRAN上使用Rcpp+BH的示例包,您可以学习,例如我自己的。更多细节也可以在书中找到,当然也可以在官方文件中找到


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

下面是我在其他问题中发布的示例:在哪里可以找到Rcpp.h文件?在CPP文件中引用,SoeCeCPPP给出了错误“构建共享库时出错1”。这是因为.CPP文件包含对其他文件的引用吗?在R\Roab[\rCPP\]文件夹路径中。老实说,我只使用Rcpp来处理非常有限和简单的C++程序,这些程序不使用任何外部C++库。但是这里的RCPP库的作者正在解释如何使用外部C++库。很抱歉,在这个阶段我帮不上忙。有几篇文章对此进行了说明。我确实遵循了你的建议,浏览了你的dqrng包。您正在使用boost库,但其中没有头文件。是否在构建或安装包时正在使用BH包?我正在使用这个命令R CMD INSTALL--library=“C:\Users\user1\Documents\R\win library\3.4\BH”project2\u 1.0.tar.gz另外,我在包中添加了inst/include文件夹,并在那里复制了boost库文件。但是得到这个错误:Euler.h:6:53:致命错误:boost/math/special_functions/binomial.hpp:没有这样的文件或directory@user1584253请查看更新。这回答了你的问题吗?我正在使用Windows。我应该在src文件夹中创建文件Makevars并在其中添加PKG_CPPFLAGS=-I../inst/include吗?请不要发布代码的图像。
 install.packages("Rcpp")
 library(Rcpp)
 sourceCpp('path to your .cpp program')