- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用 Rcpp 制作了一个 R 包,以使用我用 C++ 编写的库的方法。
我在最后一个版本上运行了 R:
R version 3.2.5 (2016-04-14)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04 LTS
我正在执行以下指令来安装我的包:
> install.packages("mypackage", repos = NULL)
包编译良好,我有源代码的 .o 文件,但在链接阶段出现错误:
* installing *source* package ‘rbdd’ ...
** libs
make: No se hace nada para 'all'.
installing to /home/sergio/R/x86_64-pc-linux-gnu-library/3.2/mypackage/libs
** R
** preparing package for lazy loading
** help
Warning: /home/sergio/R/mypackage/man/mypackage-package.Rd:27: All text must be in a section
Warning: /home/sergio/R/mypackage/man/mypackage-package.Rd:28: All text must be in a section
*** installing help indices
** building package indices
** testing if installed package can be loaded
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/home/sergio/R/x86_64-pc-linux-gnu-library/3.2/mypackage/libs/mypackage.so':
/home/sergio/R/x86_64-pc-linux-gnu-library/3.2/mypackage/libs/mypackage.so: undefined symbol: _ZN4cudd12defaultErrorENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE
Error: loading failed
Ejecución interrumpida
ERROR: loading failed
mypackge.so 是在我的包的 src
文件夹中创建的。
我有一个包含以下内容的 Makevars 文件(也在 src
中):
PKG_CPPFLAGS=-I./buddy-2.5/src -I./cudd-3.0.0/cudd -I./cudd-3.0.0/mtr -I./cudd-3.0.0/cplusplus -I./cudd-3.0.0/dddmp -I./cudd-3.0.0/util -I./cudd-3.0.0 -isystem /usr/include/c++/v1 -std=c++11
PKG_LIBS=-lc++ -L/lib
我的 NAMESPACE 文件包含以下行:
useDynLib(mypackage)
exportPattern("^[[:alpha:]]+")
importFrom(Rcpp, evalCpp)
有人知道如何解决这个问题吗?
最佳答案
我有点担心
PKG_LIBS=-lc++ -L/lib
你真的是说 /lib
吗?如果是你的图书馆,一个更常见的地方是 /usr/local/lib
,它也是默认搜索的。
但是,这是一个很大的问题,但是,您还需要了解您需要为 ldconfig
做些什么才能正确设置 libfoo.so
, libfoo.so.$MAJOR
等等。很久以前,我从 Linux HOWTO 中自学了这一点。
如果设置正确,您可以通过 Rcpp 将其链接到 R。否则可能会坚持使用系统库或包本地静态库。这种方法还将使您的包更便携。
关于c++ - 将包与 Rcpp 链接时出现 dyn.load 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36952571/
我对下面的生命周期发生了什么感到困惑: struct Foo{} impl Foo { fn foo(&self, _s: &str) {} } fn main() { let foo
这个问题在这里已经有了答案: How to convert a boxed trait into a trait reference? (2 个答案) 关闭去年。 我正在尝试获取 &dyn T来自B
这个问题在这里已经有了答案: Why doesn't Rust support trait object upcasting? (4 个回答) 1年前关闭。 我有一个库需要实现特定特征( TQDisp
我有一个接收 Box 的函数并需要将其转换为 Rc在线程内共享只读所有权。 用Box一些T: Sized ,我们可以做到Rc::new(*my_box) ,但不幸的是that doesn't work
我可以接受 Box 吗?在接受 Box 的地方?如果是,如何?如果不是,为什么,还有比以下示例更优雅的方法吗? #![allow(unused)] use std::error::Error as S
这个问题在这里已经有了答案: Why doesn't Rust support trait object upcasting? (4 个回答) 2年前关闭。 如果我有 Box , 我可以返回 &dyn
我无法将参数传递给 fn。 trait T {} struct S { others: Vec>> } impl S { fn bar(&self) { for o i
在我的程序中,在辅助线程上执行了一些操作及其结果:Result>被发送回主线程。这是非常合理的错误有 Send要求,所以实际类型是Result> .我还加了 Sync能够使用 Box from方法(仅
我有一个 Vec>作为输入,我想将其元素存储在 Vec>> .最好的方法是什么? 我试过: use std::cell::RefCell; use std::rc::Rc; trait Trait {
use std::sync::Arc; pub type A = Arc Result + Send + Sync>; pub struct B { a: A, } 给 Compilin
这个问题在这里已经有了答案: Why doesn't Rust support trait object upcasting? (4 个回答) Can I cast between two trait
读完the subtyping chapter of the Nomicon ,我无法理解类型参数的协方差。特别是对于 Box类型,描述为:T is covariant . 但是,如果我写这段代码:
我尝试在 vs 包管理器中安装第三方包时反复出现此错误, Unable to resolve dependency 'openssl.v120.windesktop.msvcstl.dyn.rt-dy
我有以下简化代码。 use async_trait::async_trait; // 0.1.36 use std::error::Error; #[async_trait] trait Metric
我有以下简化的代码。 use async_trait::async_trait; // 0.1.36 use std::error::Error; #[async_trait] trait Metri
我正在尝试在线程之间共享一个函数,可以用另一个函数调用它: fn main() { let on_virtual_tun_write = std::sync::Arc::new(|f: &dy
我最近看过使用dyn关键字的代码: fn foo(arg: &dyn Display) {} fn bar() -> Box {} 这个语法是什么意思? 最佳答案 TL; DR:这是用于指定特征对象类
我正在创建HashMap>。我可以创建HashMap并插入一个实现MyTrait的结构,但是当我检索MyTrait并尝试使用它时,编译器向我提示: error[E0161]: cannot move
我正在阅读一些代码,它有一个 consume使我可以通过自己的函数 f 的函数. fn consume(self, _timestamp: Instant, len: usize, f: F) ->
我最近看到使用 dyn 关键字的代码: fn foo(arg: &dyn Display) {} fn bar() -> Box {} 这个语法是什么意思? 最佳答案 TL;DR:这是一种用于指定tr
我是一名优秀的程序员,十分优秀!