文档章节

boost.python 与 boost.numpy安装的一些注意事项

Adellbengbeng
 Adellbengbeng
发布于 2016/11/18 15:51
字数 508
阅读 35
收藏 0
点赞 0
评论 0
  1. 安装boost.numpy时编译出错 出错为builtin_float_dtype<128>未定义,该函数出现在boost.numpy/libs/src/dtype.cpp中:
#if NPY_BITSOF_LONGDOUBLE > NPY_BITSOF_DOUBLE
template <> struct builtin_float_dtype< NPY_BITSOF_LONGDOUBLE > {
    static dtype get() { return DTYPE_FROM_CODE(NPY_LONGDOUBLE); }
};
template dtype get_float_dtype< NPY_BITSOF_LONGDOUBLE >();
template <> struct builtin_complex_dtype< 2 * NPY_BITSOF_LONGDOUBLE > {
    static dtype get() { return DTYPE_FROM_CODE(NPY_CLONGDOUBLE); }
};
template dtype get_complex_dtype< 2 * NPY_BITSOF_LONGDOUBLE >();
#endif

由于numpy将NPY_BITSOF_LONGDOUBLE 和NPY_BITSOF_DOUBLE定义为相同长度,所以没有创建该函数,但在test/dtype_mod.cpp中出现了:

   // floats and complex
  p::def("accept_float32", accept<float>);
  p::def("accept_complex64", accept< std::complex<float> >);
  p::def("accept_float64", accept<double>);
  p::def("accept_complex128", accept< std::complex<double> >);
  if (sizeof(long double) > sizeof(double)) {
      p::def("accept_longdouble", accept<long double>);
      p::def("accept_clongdouble", accept< std::complex<long double> >);
  }

可将它注销掉:

  // floats and complex
  p::def("accept_float32", accept<float>);
  p::def("accept_complex64", accept< std::complex<float> >);
  p::def("accept_float64", accept<double>);
  p::def("accept_complex128", accept< std::complex<double> >);
  /*if (sizeof(long double) > sizeof(double)) {
      p::def("accept_longdouble", accept<long double>);
      p::def("accept_clongdouble", accept< std::complex<long double> >);
  }*/

  1. 利用cmake编译boost.numpy时将LIBRARY_TYPE设置为SHARED,注意必须为大写

  2. 如何利用boot.python和boost.numpy编译文件? (1) 创建boost-build.jam 内容:

boost-build  "d:/boost_1_59_0/tools/build/src" ;

上面路径对应boost的tools库 (2) 创建Jamroot文件 内容:

# Copyright David Abrahams 2006. Distributed under the Boost
# Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

import python ;

if ! [ python.configured ]
{
    ECHO "notice: no Python configured in user-config.jam" ;
    ECHO "notice: will use default configuration" ;
    using python ;
}

# Specify the path to the Boost project.  If you move this project,
# adjust this path to refer to the Boost root directory.
use-project boost
  : D:/boost_1_59_0/ ;

lib boost_numpy : : <name>boost_numpy <search>. ;
# Set up the project-wide requirements that everything uses the
# boost_python library from the project whose global ID is
# /boost/python.
project
  : requirements <library>/boost/python//boost_python 
                 <library>boost_numpy
                 <implicit-dependency>/boost//headers 
  : usage-requirements <implicit-dependency>/boost//headers 
  ;

# Declare the three extension modules.  You can specify multiple
# source files after the colon separated by spaces.
python-extension wakeModel : main.cpp wakeModel.cpp ;

# Put the extension and Boost.Python DLL in the current directory, so
# that running script by hand works.
install convenient_copy 
  : wakeModel 
  : <install-dependencies>on <install-type>SHARED_LIB <install-type>PYTHON_EXTENSION 
    <location>. 
  ;

# A little "rule" (function) to clean up the syntax of declaring tests
# of these extension modules.
local rule run-test ( test-name : sources + )
{
    import testing ;
    testing.make-test run-pyd : $(sources) : : $(test-name) ;
}

# Declare test targets
#run-test wakeModel : wakeModel_ext wakeModel.py ;


(3) 运行命令:

bjam toolset=gcc release threading=multi

(4) 将libboost_python-mgw51-mt-1_59.dll和libboost_numpy.dll拷贝到当前目录,注意libboost_numpy.dll的依赖库要与libboost_python-mgw51-mt1_59.dll同名

© 著作权归作者所有

共有 人打赏支持
Adellbengbeng
粉丝 4
博文 6
码字总数 1129
作品 0
南京
安装程序框架--Calamares

Calamares 是 分布-独立 安装程序框架。 Calamares 使用 Qt5,C++ 11,Boost.Python,KDE Frameworks 5 和 KDE 分区管理器构建。 特性如下: 完全的模块化设计,包括三个插件接口:C++, Pyth...

叶秀兰
2015/02/03
871
0
怎样在 VS 2010 中使用 Boost [翻译]

翻译来自 stackoverflow 的讨论 How to use Boost in Visual Studio 2010 译文:怎样在 VS 2010 中使用 Boost [翻译] 作者:KTC 翻译:Breaker 译文: 我说明下在 VS 2010 中编译 Boost 的特...

晨曦之光
2012/05/23
479
0
Calamares 2.4.5 发布,分布-独立的程序安装框架

Calamares 2.4.5 发布了。Calamares 是 分布-独立的程序安装框架,使用 Qt5,C++ 11,Boost.Python,KDE Frameworks 5 和 KDE 分区管理器构建。 新版本值得关注的更新如下: fixed a path h...

两味真火
2016/11/27
671
0
Calamares 2.4.4 发布,分布-独立的程序安装框架

Calamares 2.4.4 发布了。值得关注的更新如下: improved EFI system partition flag management (this removes a dependency on sgdisk); improved parsing of SDDM configuration; support......

局长
2016/11/07
931
0
C++加密算法库 Botan 发布 1.9.12 版本

修正了 Boost.Python 的编译问题和 OpenSSL 插件问题,新增了 Keccak 哈希函数。 Botan 是一个 C++ 的加密算法库,支持 AES, DES, SHA-1, RSA, DSA, Diffie-Hellman 等多种算法,支持 X.509 ...

红薯
2010/12/14
710
0
Calamares 2.4.2 发布,分布-独立的程序安装框架

Calamares 2.4.2 发布了。值得关注的更新如下: improved system requirements configuration checking; fixed case-insensitive path handling when installing GRUB on VFAT filesystems; ......

局长
2016/10/17
525
0
用boost python加快vc程序开发

开源项目官方地址: http://www.xiaoniuhui.com/ 原文链接: http://xiaoniuhui.com/#!/用boost-python加快vc程序开发 目录 用标准c接口嵌入python 用boost python嵌入python 用python来实现业...

编码的风景
2013/08/27
0
0
C++ 的 Python 绑定--pybind11

pybind11 可实现 C++11 和 Python 之间的无缝操作。 pybind11 是一个轻量级的只包含一组头文件的 C++ 库,可以在 Python 中使用 C++ 类型。主要用于创建已有 C++ 代码的 Python 封装版本。其...

匿名
2016/04/24
4.1K
2
PyBind11 —— C++ 的 Python 绑定

pybind11 可实现 C++11 和 Python 之间的无缝操作。 pybind11 是一个轻量级的只包含一组头文件的 C++ 库,可以在 Python 中使用 C++ 类型。主要用于创建已有 C++ 代码的 Python 封装版本。其...

oschina
2016/04/25
12
0
人工智能?使用Python和dlib进行人脸检测

本人从事Python以及近9年了,目前在向人工智能进军,遇到不懂得可以骚扰我:154.7251666,Q记着,别加错了,想学Python的可以来问我学习方法,想要源代码的也可以滴滴我 “Dlib是一个现代化的...

wx5ad819330b785
05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

50 行 Python 代码,带你追到最心爱的人

程序员世纪难题 人们一提到程序员第一反应就是:我知道!他们工资很高啊!但大部分都是单身狗,不懂得幽默风趣,只是每天穿格子 polo 衫的宅男一个。甚至程序员自己也这样形容自己:钱多话少...

猫咪编程
9分钟前
0
0
JAVA知识点随心记

1.Switch case具体的支持类型? Q:支持byte、short、char、int基本类型,枚举类型和String类型(JDK7以上支持),四种基本类型的包装类型也支持,但是原因在于触发了自动拆箱,将包装类型拆成了基本...

勤奋的蚂蚁
20分钟前
0
0
NoSQL

一、NoSQL介绍 NoSQL属于非关系型数据,mysql属于关系型数据库。 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当数据量非常大的时候...

人在艹木中
25分钟前
0
0
第17章MySQL主从配置

mysql安装总结 mysql主从准备工作: 准备两台机器,每台机器安装msyql服务,并启动mysql服务 mysql详细安装 1.首先下载二进制免编译的包,下载到/usr/local/src/目录下 2.解压压缩包 3.解压完...

Linux学习笔记
28分钟前
0
0
Redis高可用及分片集群

一、主从复制 使用异步复制 一个服务器可以有多个从服务器 从服务器也可以有自己的从服务器 复制功能不会阻塞主服务器 可以通过服务功能来上主服务器免于持久化操作,由从服务器去执行持久化...

Java大蜗牛
32分钟前
0
0
前端面试题汇总

最近在复习,准备找工作了,特此总结一下前端的相关知识。 1.获取浏览器URL中查询字符的参数: function getQuery(name){    var reg = new RegExp("(^|&)"+name+"=([^&]*)"(&|$));...

凛冬来袭
今天
0
0
可持续发展的学习道路

与其要求别人,不如提升自己 内心渴望进步 经常做出改变现有模式,不断学习 寻找资源,整合资源,不断熟练这种模式 渠道很重要 先打开新世界的航路

狮子狗
今天
0
0
apollox-lua开源项目 示例codepen2

今天在示例上增加了几个功能, 首先添加js array的标准库。 所有js array的方法目前都支持了。 添加查看code模式。 点击查看code可以看到生成的lua代码。默认web模式需要把标准库连接进来, ...

钟元OSS
今天
0
0
javascript性能优化之避免重复工作

javascript最重要也最根本的性能优化标准之一是避免工作,避免工作又包括两点,第一,不做不必要的工作,第二,不做重复的已经完成的工作。第一部分可以通过代码重构完成,第二部分不做重复的...

老韭菜
今天
0
0
缓存穿透、并发和雪崩那些事

0 题记 缓存穿透、缓存并发和缓存雪崩是常见的由于并发量大而导致的缓存问题,本文讲解其产生原因和解决方案。 缓存穿透通常是由恶意攻击或者无意造成的;缓存并发是由设计不足造成的;缓存雪...

Java填坑之路
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部