用C代码构建R包(没有Rcpp)

时间:2017-08-07 07:42:03

标签: c++ objective-c c r packages

  

环境:

     
      
  • 操作系统:Windows10 [10.0.14393]
  •   
  • R:3.4.1(2017-06-30) - " Single Candle" 32位
  •   
  • Rstudio:1.0.143
  •   
  • Rtools:3.4.0.1964
  •   

这是我第一次构建R包(名为testt) 我试图使用一些C代码构建一个包,而不使用Rcpp 我放了所有.c文件(称为lca.crlca_cond.crlca_prev.crlca_condprev.c) 以及/src中的头文件。

我在chanmat.c中定义了一些C函数,在chanmat.h中声明 chanmat.cchanmat.h也在/src lca.hrlca_cond.hrlca_prev.hrlca_condprev.h都有#include 'chanmat.h'

chanmat.h中,我使用以下内容来防止编译时的多重定义。

#ifndef CHANMATH_H
#define CHANMATH_H
...
#endif

我还在NAMESPACE文件中使用了以下内容(由roxygen2生成)

useDynLib(testt,lca)
useDynLib(testt,rlca_cond)
useDynLib(testt,rlca_prev)
useDynLib(testt,rlca_condprev)
useDynLib(testt,chanmat)

当我运行build&重新加载,我收到了以下错误

Updating testt documentation
Loading testt
Error in FUN(X[[i]], ...) : 
  no such symbol chanmat in package 
C:/Users/elephant/Desktop/project/testt/src/testt.dll
Calls: suppressPackageStartupMessages ... assignNativeRoutines -> 
getNativeSymbolInfo -> lapply -> FUN
��������

Exited with status 1.

我不知道为什么chanmat.c / chanmat.h无法编译 这个问题困扰了我很长时间 关于如何解决这个问题的任何想法?

0 个答案:

没有答案