嗨,我正在尝试使用 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.lib
和ihuape.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 提供一些帮助
汤姆·万贝克