回答
需要更多信息。常規方法是這樣的:
dyn.load(「/ path/to/library」);
一些指針:
- 確保庫的架構是正確的(例如,「x86_64的」 VS「I386」 VS「的ARMv7」)
- 確保你沒有嘗試加載在Windows上的基於UNIX的機器「的.dll」(「所以」,「名爲.dylib」)
嗯。這真的會起作用嗎?我會有點驚訝,如果一個Matlab編譯的DLL有正確的接口從R調用...我猜如果你確切地知道預期的調用協議是什麼(即所有變量的類型和順序)它可以工作。 PS,原始海報:你能提供更多關於什麼「不起作用」的含義嗎?你嘗試了什麼,錯誤信息是什麼......? –
這是錯誤dyn.load(「sta.dll」,F)#全局加載inDL(x,as.logical(local),as.logical(now),...)中的錯誤:無法加載共享對象'C:/Users/grojas/Documents/sta.dll':LoadLibrary失敗:指定的模塊找不到。 – Guaner
'file.exists(「C:/Users/grojas/Documents/sta.dll」)是否等於'TRUE'? (也許你只是沒有正確設置你的工作目錄?試試'setwd([適當的目錄])'或'dyn.load(file.choose())'? –
基於以下@馬里奧的回答評論跟帖討論:我會建議你試試比較你做了(R CMD SHLIB
DLL與Matlab DLL),以幫助診斷問題。基於這個結果,我認爲你需要弄清楚dll的調用語法是在C語言中,然後爲它編寫一個小的C語言包裝器,它使用這個語法,但又是R CMD SHLIB
-able ... R CMD SHLIB --help
說你可以在命令行中包含鏈接器選項(例如,確保您將Matlab可調用的dll與R可調用的dll鏈接起來),但我不確定其確切的語法。這可能有助於研究R擴展手冊的相關部分。
用什麼語言編寫的源代碼?
麻煩的是混合編譯器。 Matlab dll很可能是由Visual Studio構建的。 而且,當函數標識符變得錯亂時,您無法在不同的編譯器之間混合使用C++代碼。您可以通過一些工作混合使用C對象代碼。 MinGW網站上有一些常見問題。
- 1. .C接口與R
- 2. 與java應用程序的接口DLL,如何?
- 3. 如何從DLL接口訪問類?
- 4. 挑戰-Ninjascript C#接口與C++ dll
- 5. VST2接口dll入口點
- 6. C#接口C++ DLL?
- 7. 如何處理DLL導出的接口中的析構函數
- 8. R/C++接口
- 9. 鏈接mingw DLL與Windows DLL
- 10. 接口DLL中的類實現?
- 11. 我該如何使用JNA中沒有接口的DLL
- 12. 如何在c中使用外部dll的接口#
- 13. 如何鏈接Fortran exe與Fortran DLL?
- 14. 如何實現與接口
- 15. DLL導出和Visual C++中的DLL接口
- 16. 動態加載DLL接口
- 17. C#接口到DLL和ExecutionEngineException
- 18. C++ DLL插件接口
- 19. 使用接口從DLL
- 20. 從DLL獲取庫接口
- 21. 擴展接口,如果接口是外部DLL
- 22. 如何與R中
- 23. 接口與接口
- 24. 如何在C++中爲USB投影機使用DLL接口
- 25. 鏈接與cygwin1.dll
- 26. 如何鏈接dramsim2庫接口與PINtool
- 27. 如何啓動類與接口的接口內
- 28. 接口與OCaml中
- 29. 從C DLL到.NET的接口
- 30. Interop DLL的實例化接口
在我頭頂,這似乎不太可能工作。你想做什麼?你*可能*能夠將這個調用打包成一段C代碼,然後可以正確鏈接並調用R ... –