Функция, которая принимает std::string
ввод, не может быть корректно представлена через boost.python с gcc/5.2.0; в то время как gcc 4.8.3 работает нормально.
p.s. Я использую готовый libboost_python.so.1.63.
Код C++
#include <boost/python.hpp>
#include <iostream>
using namespace boost::python;
void func(const std::string & hi)
{
std::cout<<hi<<std::endl;
}
BOOST_PYTHON_MODULE(example)
{
def("func", &func);
}
Выполнение Python
>>> from example import *
>>> func("hi")
Boost.Python.ArgumentError: Python argument types in
example.func(str)
did not match C++ signature:
func(std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >)
-D_GLIBCXX_USE_CXX11_ABI=0
, и#define _GLIBCXX_USE_CXX11_ABI 0
работают. Есть ли побочный эффект для этого? - person Alex Pai   schedule 21.12.2018