gpt4 book ai didi

c++ - 在 R 项目中包含第 3 方库

转载 作者:行者123 更新时间:2023-11-30 04:00:43 31 4
gpt4 key购买 nike

我正在尝试将 qpOASES c++ 库包含在我在 RStudio 中构建的 Rcpp 项目中。

我浏览了编写 R 包和各种 Rcpp 小插图。我找到了这个 post其中引用 this存档对话。按照我的指导,我将 qpOASES 库编译成静态(libqpOASES.a 和 libqpOASES.so)库。我跟着这个youtube video关于如何在 RStudio 中使用外部库。该视频指示我在我的 R 项目中创建 lib 和 inc 文件夹。在 lib 文件夹中,有两个静态库文件(libqpOASES.a 和 libqpOASES.so)。在 inc 文件夹中,我放置了 libqpOASES.hpp 和一个包含 libqpOASES.hpp 引用的其他头文件的目录 qpOASES。

我在 windows 电脑上工作,但我创建的包最终也需要在 unix 上工作。目前在我的 MakeVars(和 Makevars.win)文件中,我有以下内容:

PKG_CPPFLAGS = -I../inc
PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) -L../lib -llibqpOASES

当我清理并重建项目时:它会成功构建,直到出现以下情况:

g++ -m64 -shared -s -static-libgcc -o default.dll tmp.def LS_LocalLaplacian.o RcppExports.o    RegularizedLeastSquares.o TrainNetworks.o affinityMatrix.o dist2.o dn.o dominateSet.o rcpparma_hello_world.o -LC:/PROGRA~1/R/R-31~1.0/bin/x64 -lRlapack -LC:/PROGRA~1/R/R-31~1.0/bin/x64 -lRblas -lgfortran -L../lib -llibqpOASES -Ld:/RCompile/CRANpkg/extralibs64/local/lib/x64 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/PROGRA~1/R/R-31~1.0/bin/x64 -lR
c:/rbuildtools/3.1/gcc-4.6.3/bin/../lib/gcc/i686-w64-mingw32/4.6.3/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -llibqpOASES
collect2: ld returned 1 exit status no DLL was created
ERROR: compilation failed for package 'default'

我已经检查了事物的命名是否有拼写错误等,但没有发现那里的问题。我尝试从 PKG_LIBS 声明中删除“-llibqpOASES”,它编译;但是,当我尝试使用 qpOASES 库提供的方法时,找不到它们:

undefined reference to qpOASES::QProblem::QProblem(int, int, qpOASES::HessianType)'
RegularizedLeastSquares.o:RegularizedLeastSquares.cpp:(.text+0x2a8): undefined reference to
qpOASES::QProblem::~QProblem()'
collect2: ld returned 1 exit status
no DLL was created
ERROR: compilation failed for package 'default'

如何在 RStudio 中成功使用外部 C++ 库?

最佳答案

有很多现有的包可以做到这一点——我会选择其中一个,看看它是如何工作的。

一个相对较新的例子是 nloptr绑定(bind)到 NLopt .我帮助使构建的 Unix 端更加灵活(即,如果存在库,则使用该库,否则下载并构建它——在它总是做后者之前)。您也可以将其用作独立的测试用例进行比较。

关于c++ - 在 R 项目中包含第 3 方库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165327/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com