环境:
- 操作系统: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.c
,rlca_cond.c
,rlca_prev.c
和rlca_condprev.c
)
以及/src
中的头文件。
我在chanmat.c
中定义了一些C函数,在chanmat.h
中声明
chanmat.c
和chanmat.h
也在/src
lca.h
,rlca_cond.h
,rlca_prev.h
和rlca_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
无法编译
这个问题困扰了我很长时间
关于如何解决这个问题的任何想法?