2013-07-18 88 views
1

我正在運行Windows 7,並且我知道該DLL是使用Visual Studio C++ 2010構建的。由於我沒有源代碼,所以在創建包(NAMESPACE)時無法在R中快速構建它, 。 在這個階段,我不需要創建一個包,我只是想用R加載庫爲dyn.load()。既然它是一個dll,我認爲它可以移植到任何客戶端程序,但我只能確定,因爲我知道它不是使用GNU gcc編譯的。我可以在R中加載第三方.dll嗎?

編輯:

我想打電話給所有的DLL部署功能。

+1

你不知道任何有關DLL。我不知道'dyn.load'將在這裏工作,因爲R尋找名爲'R_init_mylib'的符號......老實說,我沒有看到你問這個問題之前有什麼嘗試。 – agstudy

+0

你想調用任何函數,還是隻想加載DLL? –

+0

我知道它具有SEXP作爲函數的輸入和輸出,因此我可以在使用.Call加載.dll之後調用函數。有一個版本使用.C,並且將本機C類型與指向輸出的指針一起傳遞。 – MSardelich

回答

2

是的,R可以使用dyn.load加載它。不過,您可能會也可能不會實際調用它所導出的功能。除非函數的參數對應於R可以處理的參數,否則它們將不可用。如果是這種情況,你可以編寫一個包裝DLL,作爲它和R之間的翻譯層。

+0

該DLL使用SEXP輸入和輸出參數...在這種情況下,即使我沒有使用CMD R SHLIB或任何GNU編譯器編譯和鏈接它,我是否可以訪問函數? – MSardelich