我正在构建一个package,它可以在Windows和Linux上成功编译macOS。该软件包使用Rcpp
为C库提供接口以解决ODE(常微分方程)。
该程序包通过macOS
和Ubuntu
上的所有检查(通过travis-ci
测试)。该软件包也成功构建在Windows 10
计算机上,但运行一个简单的示例(在其他平台上成功运行,导致R
会话崩溃。)
我在我的智慧结束,试图找出问题所在。来自Appveyor
的消息粘贴在下方。
此示例可在https://github.com/sn248/sundialr/blob/master/inst/examples/cv_Roberts_dns.r
找到并在其他平台上成功运行。
有关如何在此处调试此内容的任何指示都非常有用,谢谢!
* running examples for arch 'i386' ... ERROR
Running examples in 'sundialr-Ex.R' failed
The error most likely occurred in:
> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
> ### Name: cvode
> ### Title: cvode
> ### Aliases: cvode
>
> ### ** Examples
>
> Rcpp::sourceCpp(code = '#include <Rcpp.h>
+
+ using namespace Rcpp;
+
+ typedef NumericVector (*funcPtr) (double t, NumericVector y, NumericVector ydot);
+
+ // [[Rcpp::export]]
+ NumericVector cv_Roberts_dns (double t, NumericVector y, NumericVector ydot){
+ ydot[0] = -0.04 * y[0] + 1e04 * y[1] * y[2];
+ ydot[2] = 3e07 * y[1] * y[1];
+ ydot[1] = -ydot[0] - ydot[2];
+
+ return ydot;
+
+ }
+
+ // [[Rcpp::export]]
+ XPtr<funcPtr> putFunPtrInXPtr() {
+
+ XPtr<funcPtr> testptr(new funcPtr(&cv_Roberts_dns), false);
+ return testptr;
+
+ }')
>
>
> # R code to generate time vector, IC and solve the equations
> time_t <- c(0.0, 0.4, 4, 40, 4E2, 4E3, 4E4, 4E5, 4E6, 4E7, 4E8, 4E9, 4E10)
> my_fun <- putFunPtrInXPtr()
> df <- cvode(time_t, c(1,0,0), my_fun , 1e-04, c(1e-8,1e-14,1e-6))