Не могу скомпилировать boost.python 1.65.1 с MSVC2015 - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь сгенерировать библиотеки Boost.Python 1.65.1 с MSVC2015 и Python 3.7.

У меня ошибка компиляции:

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/

Как использовать Boost в Visual Studio 2010

Редактировать: IУ меня нет этой ошибки с бустом 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 Ответ

0 голосов
/ 05 марта 2019

Это известная проблема, Boost.python не компилируется с Python 3.7.Это было исправлено в Boost.python 1.67.

Исправление очень простое, и вы можете патч перенести обратно в вашу локальную копию вручную или просто привести результат _PyUnicode_AsString() к (void*)в libs/src/converter/builtin_converters.cpp(51).

...