Ошибка 0xC0000005 при импорте модуля, созданного с помощью Boost::Python.Python

Программы на Python
Anonymous
Ошибка 0xC0000005 при импорте модуля, созданного с помощью Boost::Python.

Сообщение Anonymous »

У меня есть следующий файл benchmark.cpp:

Код: Выделить всё

#include 

char const* greet()
{
return "hello, world";
}

BOOST_PYTHON_MODULE(benchmark)
{
using namespace boost::python;
def("greet", greet);
}
который создан с использованием CMakeLists.txt, содержащего, в частности, следующие фрагменты кода:

Код: Выделить всё

cmake_minimum_required(VERSION 3.21)

find_package (Python3 COMPONENTS Interpreter Development REQUIRED)
find_package(Boost COMPONENTS python REQUIRED)

set(BENCHMARK_MODULE benchmark)
add_library(${BENCHMARK_MODULE} MODULE benchmark.cpp)
set_target_properties(${BENCHMARK_MODULE} PROPERTIES PREFIX "" SUFFIX ".pyd")
target_include_directories(${BENCHMARK_MODULE} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${BENCHMARK_MODULE} PUBLIC ${Boost_INCLUDE_DIR})
target_include_directories(${BENCHMARK_MODULE} SYSTEM PUBLIC ${Python3_INCLUDE_DIRS})
target_link_libraries(${BENCHMARK_MODULE} PUBLIC ${Python3_LIBRARIES})
target_link_libraries(${BENCHMARK_MODULE} PUBLIC ${Boost_LIBRARIES})
Я пишу на Windows 10, используя MinGW64 MSYS2 и генератор Ninja; с использованием Python 3.12.
Зависимости. Современный Dependency Walker с открытым исходным кодом предоставил мне следующие зависимости для benchmark.pyd:
< ul>
[*]C:\WINDOWS\system32\kernel32.dll
[*]C:\msys64\mingw64\bin\libgcc_s_seh-1.dll
[*]C:\WINDOWS\system32\MSVCRT.dll
[*]C:\msys64\mingw64\bin\libstdc++-6.dll
[*]C:\msys64\mingw64\bin\libboost_python311-mt.dll
[*]C:\Program Files\Python312\python312.dll
поэтому в коде Python я попытался импортировать этот модуль следующим образом:

Код: Выделить всё

import os
import sys

sys.path.append('C:\\msys64\\mingw64\\bin')
[os.add_dll_directory(path) for path in sys.path if os.path.isdir(path)]

import benchmark
но когда я запускаю этот код, я получаю сообщение «Процесс завершен с кодом выхода -1073741819 (0xC0000005)» при импорте модуля benchmark.
В чем причина такого поведения? Как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/790 ... oostpython

Вернуться в «Python»