无法使用MSVC2015编译boost.python 1.65.1

问题描述 投票:1回答:1

我正在尝试使用MSVC2015和Python 3.7生成Boost.Python 1.65.1库。

我有这个编译错误:

libs\python\src\converter\builtin_converters.cpp(51): error C2440: 'return': cannot convert from 'const char *' to 'void *'
libs\python\src\converter\builtin_converters.cpp(51): note: Conversion loses qualifiers

相关代码(错误在返回时):

void* convert_to_cstring(PyObject* obj)
{
  return PyUnicode_Check(obj) ? _PyUnicode_AsString(obj) : 0;
}

这看起来像是一个真正的错误。 b2配置中是否有一个选项可以使编译器更灵活?

我用这个作为信息:

https://codeyarns.com/2014/06/06/how-to-build-boost-using-visual-studio/

How to use Boost in Visual Studio 2010

编辑:我没有使用boost 1.69.0这个错误,但我必须使用1.65.1

Edit2:他们在1.69.0中更改了此代码:

PyUnicode_Check(obj) ? const_cast<void*>(reinterpret_cast<const void*>(_PyUnicode_AsString(obj))) : 0;
python c++ boost boost-python
1个回答
4
投票

这是一个已知问题,Boost.python没有使用Python 3.7进行编译。它已在Boost.python 1.67中修复。

修复非常简单,您可以手动将the patch反向移植到本地副本,或者只将_PyUnicode_AsString()的结果转换为(void*)中的libs/src/converter/builtin_converters.cpp(51)

© www.soinside.com 2019 - 2024. All rights reserved.