-2

我对 R 闪亮的应用程序开发相当陌生。我当前的应用程序允许用户通过最大似然加载数据并拟合鱼标签返回模型。我使用包 TMB 来

  1. 编译 C++ .cpp 文件(在 TMB 中编译函数)
  2. 使用 dyn.load(dynlib("DLLName")) 加载 .DLL
  3. 使用 TMB MakeADFun 函数创建必要的梯度信息(fitmodel<-MakeADFun(datar,parameters,DLL="IRCR",silent=T))
  4. 使用 nlminb 拟合模型 (fit<-try(nlminb(fitmodel$par,fitmodel$fn,fitmodel$gr,control=list(eval.max=100000,iter.max=mit), lower=c(rep(log( flow1),length(Fyr)),rep(log(mlow1),length(Myr)),rep(log(falow1),length(FAyr))),upper=c(rep(log(fupper1),length(Fyr) )),rep(log(mupper1),length(Myr)),rep(log(faupper1),length(FAyr)))),silent=T))

在本地一切正常。

当我将应用程序部署到 Shinyappio 时,我想我可以将 .DLL 包含在“/www”文件夹中,并在需要时使用 dyn.load 访问它,这样就不必每次都编译 .cpp。但是,当我运行模型时,我的应用程序不断崩溃。我检查了日志,错误提示找不到“.so”文件。我相信“.so”文件是 Linux 操作系统的 DLL 等效文件。有谁知道是否有办法在部署之前或期间使用 TMB 函数创建“.so”,这样 .cpp 只需编译一次?

或者,如果我很遥远,有人可以启发我吗?任何帮助将不胜感激。

提前致谢。

4

0 回答 0