2015-06-11 17 views
0

我有一個圖書館,讓我們說mylibrary.dll,有C++代碼,我想在R.我這樣做運行時:錯誤嘗試調用C++中的R .dll文件庫

dyn.load("mylibrary.dll") 
.Call("myfun") 

我得到:現在

Error in .Call("myfun") : C symbol name "myfun" not in load table 

,我見過幾個答案類似的問題,在這裏和在其他網站上,但是當我嘗試每種解決方案,每一個似乎是需要能夠訪問原始的源代碼,例如添加像這樣:extern "C"到C++代碼或以某種方式重新編譯代碼。我所擁有的只是一個.dll文件,我想直接使用它來從R中調用其中包含的函數。

+0

順便說一句,當我跑的第一行代碼,我得到這個:'警告信息: 在inDL(x,as.logical(local),as.logical(now),...)中: DLL試圖將FPU控制字從8001f更改爲9001f'。我在其他地方看到這可以被忽略。 –

+0

爲什麼不包含你的代碼? – nrussell

+1

你有沒有試過看裝載表?在Unix上,你可以使用'nm'命令,但是在Windows上......我不知道。也許嘗試一些[這](http://stackoverflow.com/questions/4438900/how-to-view-dll-functions)線程的東西? –

回答

0

解決方案:函數的名稱與我的預期不同。我轉到了Alexey在評論中建議的主題,從那裏可以使用建議的工具之一(DLL導出查看器)來獲取功能列表,我找到了正確的名稱。

(唉,我現在需要弄清楚爲什麼R的鎖定,當我打電話的功能,但在這裏,我的問題是完成了!)