python - 无法使用 MSVC2015 编译 boost.python 1.65.1

标签 python c++ boost boost-python

我正在尝试使用 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;

最佳答案

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

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

关于python - 无法使用 MSVC2015 编译 boost.python 1.65.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54991157/

相关文章:

python - 多个 pyspark "window()"调用在执行 "groupBy()"时显示错误

python - Prim 算法生成的最小生成树的预序树遍历

python - Numpy 排列但步长加倍

c++ - boost::make_function_output_iterator 的逆函数

c++ - 相当于 boost::test 的 CppUnit 保护器?

python - 在 hdfs 中运行顺序代码

c++ - 我正在制作这个程序,服务器不会发送给客户端

c++ - 多个 DLLMain 函数

c++ - 使用 openGL 顶点数组的白屏

C++序列化选项