【问题标题】:Can't compile boost.python 1.65.1 with MSVC2015无法使用 MSVC2015 编译 boost.python 1.65.1
【发布时间】:2019-07-26 05:35:09
【问题描述】:

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

【问题讨论】:

  • 可能是已知 1.65.1 的编译器存在此错误。

标签: python c++ boost boost-python


【解决方案1】:

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

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

【讨论】:

  • 感谢您的快速回答。顺便说一句,请问您在哪里可以找到此类信息?在谷歌上搜索这类关于 boost 的东西时,我总是遇到麻烦
  • 只是相关文件的 commit history 和/或 git blame..
猜你喜欢
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 2012-06-04
  • 2018-02-19
  • 2012-09-07
  • 2013-07-14
  • 2020-02-17
  • 1970-01-01
相关资源
最近更新 更多