Python не видит скомпилированный сторонний модуль. Windows (msvc)
Здравствуйте!
Пытаюсь разобраться с Boost.Python'ом. Взял простенький пример с функцией, собрал через CMake .dll-ку, переименовал .dll в .pyd, пытаюсь импортировать в .py-скрипт, в итоге вылезает ошибка подгрузки dll, не обнаружен модуль:
Traceback (most recent call last):
File "c:\Users\zofor\OneDrive\Рабочий стол\example\hello.py", line 2, in <module>
import modules.hello_ext
ImportError: DLL load failed while importing hello_ext: Не найден указанный модуль.
Windows 11, Компилятор MSVC 19.40 (vc143) x64, Boost 1.85.0
Исходные коды прилагаю, благо они маленькие:
Файл CmakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(hello_ext)
set(CMAKE_CXX_COMP)
set(CMAKE_CXX_STANDARD 17)
# find_package работать отказывался, поэтому ввел прямые пути
include_directories("C:/Libraries Files/boost_1_85_0")
include_directories("C:/Program Files/Python312/include")
link_directories("C:/Libraries Files/boost_1_85_0/lib64-msvc-14.3")
link_directories("C:/Program Files/Python312/libs")
add_library(hello_ext MODULE hello.cpp)
Библиотека собирается без каких либо проблем
Файл с реализацией библиотеки hello.cpp, заголовочных файлов нет
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
И сам скрипт hello.py
import modules.hello_ext
print(hello_ext.greet())
hello_ext.pyd находится в папке modules, __init__.py в папке присутствует
Ответы (1 шт):
Проблему удалось решить добавлением boost.python-овой .dll в папку к компилируемому .pyd-модулю. Все сразу заработало!
Видимо, в компилируемой dll-ке не хранится информация, где искать связанные с ней сторонние dll-ки, и система пытается найти их сама. При этом добавление пути к библиотекам boost в PATH ничего не дает!