我从Matlab创建了dll扩展。然后,我想在R中读取该dll。
我使用了dyn.load()
,但它无法正常工作。
您能给我一些建议吗?
我从Matlab创建了dll扩展。然后,我想在R中读取该dll。
我使用了dyn.load()
,但它无法正常工作。
您能给我一些建议吗?
源代码是用哪种语言编写的?
问题在于混合使用编译器。Matlab dll 很可能是由Visual Studio构建的。你不能简单地在不同的编译器之间混合使用C++代码,因为函数标识符会被搞乱。如果经过一些工作,可以混合使用C对象代码。MinGW网站上有一些常见问题解答。
根据下面@Mario答案的评论讨论:我建议您尝试比较您所做的比较(R CMD SHLIB
dll vs Matlab dll)以帮助诊断问题。根据结果,我认为您需要弄清楚在C中调用dll的语法,并编写一个小的C包装器来使用该语法,但反过来是可R CMD SHLIB
的... R CMD SHLIB --help
说您可以在命令行上包含链接器选项(即确保将您的Matlab可调用dll与您的R可调用dll链接),但我不确定精确的语法。研究R扩展手册的相关部分可能会有所帮助。
需要更多的信息。通常的做法是这样的:
dyn.load("/path/to/library");
一些要点:
file.exists("C:/Users/grojas/Documents/sta.dll")
是否等于 TRUE
?(即,也许您只是没有正确设置工作目录?尝试使用 setwd([适当的目录])
或 dyn.load(file.choose())
?) - Ben Bolker