在windows中编译rcpp和lib文件的选项

时间:2013-10-16 10:35:44

标签: windows dll rcpp

您好我正在尝试使用rcpp。为此,我想要一些cpp代码,它通过使用lib文件(与其名称相同)加载dll。我允许运行的代码是:

cppFunction(includes=c("#include "windef.h","#include \"C:/data/Rdata/IHUAPI.H\" "), 'int functietom(int a){long serverhandle;int lRet;lRet = ihuConnect ( "historian1",NULL,NULL, &serverhandle ); return 5;}', verbose  
 = TRUE)

我收到以下错误:

  

未定义引用`ihuConnect @ 16'colle2:ld返回1退出   status inDL中的错误(x,as.logical(local),as.logical(now),...):
  无法加载共享对象   'C:/Users/user1663/AppData/Local/Temp/RtmpSW1Ki7/sourcecpp_1a04df63309/sourceCpp_26588.dll':   LoadLibrary失败:

ihuConnect函数位于ihuapi.libihuape.dll个文件中。在Visual Studio中的c ++中,我添加了lib文件作为添加的依赖项,然后我摆脱了这个错误,因为我有时也会得到这个错误,然后就是我忘了在编译中添加lib文件。

因此,我的问题是:如何在编译中添加此lib文件作为选项。

当我使用dyn.load

  

( “C:/data/Rdata/ihUAPI.dll”)

然后检查它是否已加载然后他说是 问题是getDLLRegisteredRoutines('ihUAPI',addNames = TRUE) 然后它说: 0列和0行的数据框

因此dll似乎不包含这些函数,但是当我从visual studio中使用它时它会这样做。

请为lib-files和ddl-files提供一些帮助

汤姆·万布克

1 个答案:

答案 0 :(得分:1)

您错过了Rcpp FAQ条目2.9'我可以在Visual Studio中使用Rcpp吗?'。

要杀死所有的悬念:不,你不能。