三次元日誌(hugo)

mmdbridgeのビルドで必要になったBoost.Python周り。

  • boost-1.64.0
  • python-3.5.3

debug版のboostをビルドしたのだが、よく見るとRelease版のpython35.dllの方がリンクされていた。がんばって、DEBUGマクロの定義等を調べたのだがなかなかわからなかった。どうやらどこかでundef _DEBUGされているらしいと当たりがついた。

  • boost/python/detail/wrap_python.hpp
#ifdef _DEBUG
# ifndef BOOST_DEBUG_PYTHON
#  ifdef _MSC_VER  
    // VC8.0 will complain if system headers are #included both with
    // and without _DEBUG defined, so we have to #include all the
    // system headers used by pyconfig.h right here.
#   include <stddef.h>
#   include <stdarg.h>
#   include <stdio.h>
#   include <stdlib.h>
#   include <assert.h>
#   include <errno.h>
#   include <ctype.h>
#   include <wchar.h>
#   include <basetsd.h>
#   include <io.h>
#   include <limits.h>
#   include <float.h>
#   include <string.h>
#   include <math.h>
#   include <time.h>
#  endif
#  undef _DEBUG // Don't let Python force the debug library just because we're debugging.
#  define DEBUG_UNDEFINED_FROM_WRAP_PYTHON_H
# endif
#endif

うげげ・・・

作ったのがpython3用なのに使うときに3がつかないよ

libboost_python3-vc140-mt-gd-1_64にリンクしたいのだがlibboost_python-vc140-mt-gd-1_64にリンクしようとする。

BOOST_ALL_NO_LIB

を定義してautolinkを阻止して自分でリンクする。

Python_d.dllにリンクするには

b2 --with-python --debug-configuration python-debugging=on

として

libboost_python3-vc140-mt-gyd-1_64

を作成する。gydyがpython debugらしい。 python自体のデバッグをするのでなければ必要ないかも。