我想構建一個R包,它通過.Call調用一些C子程序。用C代碼構建R包,DLL缺失
所有的功能工作正常,如果我手動做R CMD SHLIB,然後dyn.load .dll文件。
現在,我正在構建包含R CMD構建的包。
我把所有的C代碼放在src文件夾裏,和我添加的一些庫的.h文件一起。當我運行[R CMD建立NAMEPACKAGE一切似乎都很正常,但是當我運行[R CMD檢查NAMEPACKAGE我收到以下錯誤:
*** arch - i386
Error in library.dynam(lib, package, package.lib) :
DLL 'NAMEFUNC' not found: maybe not installed for this architecture?
Error: loading failed
Execution halted
*** arch - x64
Error in library.dynam(lib, package, package.lib) :
DLL 'NAMEFUNC' not found: maybe not installed for this architecture?
Error: loading failed
Execution halted
ERROR: loading failed for 'i386', 'x64'
我試圖讓互聯網上的一些信息,我有感覺我應該編寫一個Makevars文件,但老實說,我花了很多時間在Writing R擴展教程(1.2.1)上,我真的很難理解我需要做什麼。 有人請親自向我解釋如何解決問題?考慮我想將我的軟件包提交給CRAN。謝謝。
你有你的C代碼在你的包的src'目錄或只是DLL? – cdeterman 2014-12-04 17:12:45
其實我只有c代碼,我想我明白了,出於便攜性的原因,我沒有編譯c代碼之前,因爲否則dll應該只適用於我自己的操作系統...或者我錯誤? – user2960323 2014-12-04 21:08:28
你是對的,有趣的是,如果構建工作正常,檢查會給出這些錯誤。鑑於您打算提交給CRAN,您是否願意將其放在github上?如果我們可以查看您的軟件包結構和NAMESPACE等文件,將更容易排除故障。 – cdeterman 2014-12-05 14:14:04