0

嗨,我正在尝试使用 rcpp。为此,我想要一些通过使用 lib 文件(与 同名)加载 dll 的 cpp 代码。我让运行的代码是:

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)

我收到以下错误:

undefined reference to 'ihuConnect@16' collect2: ld returned 1 exit 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 提供一些帮助

汤姆·万贝克

4

1 回答 1

1

您错过了Rcpp 常见问题解答条目 2.9“我可以将 Rcpp 与 Visual Studio 一起使用吗?”。

并消除所有悬念:不,你不能。

于 2013-10-16T12:22:55.590 回答