文档章节

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

Adellbengbeng
 Adellbengbeng
发布于 2016/11/18 15:51
字数 508
阅读 60
收藏 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
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.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

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
6
0
现场看路演了!

HiBlock
昨天
16
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
10
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部