簡體   English   中英

使用C代碼構建R包,缺少dll

[英]Building R package with C code, dll missing

我正在嘗試構建一個R包,它通過.Call調用一些C子程序。

如果我手動執行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。 謝謝。

我剛剛發現了問題所在! 它(像往常一樣)是一個相當愚蠢的事情,我不知道即使你用某個名稱調用某個函數,關聯的dll也會自動調用包的名稱而不是函數本身,就像它一樣當你通過R CMD SHLIB創建你的dll時,會發生這種情況。 因此,在NAMESPACE中我不得不添加useDynLib(NAMEOFPACKAGE)而不是useDynLib(NAMEOFFUNCTION)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM