Я только начал работать с pybind11 и хотел попробовать минимальный пример, который они предоставляют на своей странице.
#include
int add(int i, int j) {
return i + j;
}
PYBIND11_MODULE(example, m) {
m.doc() = "pybind11 example plugin"; // optional module docstring
m.def("add", &add, "A function that adds two numbers");
}
Я использую Visual Studio 2022 и могу без проблем скомпилировать решение как DLL. Это дает мне в каталоге x64/Debug следующие файлы
example.dll
example.exp
example.lib
example.pdb
Затем я захожу в папку x64/Debug и запускаю Python 3.12 (ту же версию, которую я использовал в pybind11), но когда я это делаю,
>>> import example
Я получаю следующее
>>> import example
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'example'
Что я делаю не так?
В выводе компиляции, установив детализацию, я смог получить точные аргументы cl.exe которые:
CL.exe /c /IC:\Users\usr\AppData\Local\Programs\Python\Python312\include /I"C:\Users\usr\source\repos\python_cxx_interaction\python_cxx_interaction\.venv\Lib\site-packages\pybind11\include" /Zi /nologo /W3 /WX- /diagnostics:column /sdl /O2 /Oi /GL /D NDEBUG /D _CONSOLE /D _WINDLL /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /permissive- /Fo"python_c.f6c111de\x64\Release\\" /Fd"python_c.f6c111de\x64\Release\vc143.pdb" /external:W3 /Gd /TP /FC /errorReport:prompt example.cpp
Подробнее здесь: https://stackoverflow.com/questions/786 ... est-module