如何使用静态库编写R扩展
How to write R extension using a static library
嗨,我正试图使用预编译的静态库和单个头文件来构建一个R包。最好的方法是什么?
因为我没有找到任何关于它的信息(只有关于创建从src编译的R包的信息),所以我决定在扩展src目录中编写一个精简的C++包装器类。我还将库所需的一个头文件添加到src目录中,理论上现在可以链接到我电脑上的库(我想)。然而,我想将该静态库与我的包一起提供,这也会使链接更容易(我可以将其硬编码到包目录中)。
有什么想法吗?
感谢
首先,任何到R的包含编译源代码的扩展包都将动态链接,因为R在运行时加载它。
也就是说,代码的任何外部依赖项都可以静态链接到扩展包中。要做到这一点,您可以尝试在PKG_LIBS
参数中列出静态库及其完整路径,以及强制静态链接的标准方式。
我想不出一个使用这种方法的CRAN包示例,或者我建议将其作为一节。
相关文章:
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- C4204:使用的非标准扩展:非常量聚合初始值设定项
- 使用 operator() 扩展 Eigen::EigenBase
- 通过Python Distutils(用于Python C扩展)使用可重定位的设备代码编译CUDA代码
- 使用宏扩展的泛型:为什么指令缓存使用不当?
- 使用Boost文件系统C++将具有特定扩展名的文件的名称保存在特定文件夹中
- 如何构建一个 setup.py 来编译C++使用 Python、pybind11 和 Mingw-w64 的扩展?
- 如何使用 std::forward 精确地评估参数包的扩展?
- PHP Profiler语言 - 使用 C++ 从 PHP 扩展获取客户端 IP 和 URL
- 在PHP扩展中使用emalloc从线程时出现隔离错误
- SWIG -- 在扩展中使用类型映射
- 在Adobe Flex本机扩展中使用libc++而不是libstdc++
- 获取 std::vector 的大小(通过扩展专门使用参数类型的可变参数模板函数来处理参数)
- 如何在AIR本机扩展中使用FRESetContextNativeData()
- js-bson:无法加载c++bson扩展,使用纯js版本(Openshift-nodejs)
- 如何在c++中扩展和使用超类的成员
- 不稳定的cython扩展在使用valgrind启动时不会崩溃
- 是否有可能在另一个php扩展中使用函数
- 如何在包扩展期间使用constexpr函数?