无法使用 MSVC2015 编译 boost.python 1.65.1
Can't compile boost.python 1.65.1 with MSVC2015
我正在尝试使用 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
相关代码(错误在return):
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;
这是一个已知问题,Boost.python 未使用 Python 3.7 进行编译。它已在 Boost.python 1.67 中修复。
修复非常简单,您可以手动将 the patch 反向移植到您的本地副本,或者将 _PyUnicode_AsString()
的结果转换为 libs/src/converter/builtin_converters.cpp(51)
中的 (void*)
。
我正在尝试使用 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
相关代码(错误在return):
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;
这是一个已知问题,Boost.python 未使用 Python 3.7 进行编译。它已在 Boost.python 1.67 中修复。
修复非常简单,您可以手动将 the patch 反向移植到您的本地副本,或者将 _PyUnicode_AsString()
的结果转换为 libs/src/converter/builtin_converters.cpp(51)
中的 (void*)
。