Windows / Cygwin - не могу использовать pybind11 - сделать ошибку - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу интегрировать в проект практический инструмент pybind11. Моя рабочая среда - окна.

Чтобы установить pybind11, есть эта страница: Pybind First setps

Я пробовал несколько раз под окнами и несколько дней (3), с Eclipse, затем с Python и Mingw. затем с Visual Studio

После всего этого я попробовал с Linux и через 1 час пришел к этому примеру:

#include <pybind11 / pybind11.h>

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 which adds two numbers");
}

c ++ -O3 -Wall -shared -std = c ++ 11 -fPIC python3 -m pybind11 --includes example.cpp -o пример python3-config --extension-suffix

С тестом в дополнение к Python.

После этого я решил добиться успеха с Cygwin .

Вот где я:

easy_install-3.6 pip
python3 -m pip install pytest
python3 -m pip install pybind11
python3 -m pip install python-config

Тогда под pybind11-master

mkdir build
cd build
cmake ..
make check -j 4

У меня есть два предупреждения и примечание:

предупреждение: "pybind11 :: buffer :: buffer (pybind11 :: handle, bool)" устарел: используйте reinterpret_borrow () или reinterpret_steal () [-Wdeprecated-декларации]

При связывании возникает ошибка, но их много.

/ tmp / ccqNl6ln.ltrans0.ltrans.o: :(. Text + 0x12f16): неопределенная ссылка на «pybind11 :: index_error :: index_error () [clone .lto_priv.4841] [clone .lto_priv.4883]»

pybind11 действительно будет плюс для проекта. Но я не могу использовать его в Windows.

Кто-нибудь когда-нибудь компилировал pybind11 с cygwin?

заранее большое спасибо

1 Ответ

0 голосов
/ 02 ноября 2018

после установки с помощью pip 3 модуля

python3 -m pip install pytest
python3 -m pip install pybind11
python3 -m pip install python-config

следующий пример, работает

#include <pybind11/pybind11.h>

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 which adds two numbers");
}

если скомпилировано как:

c++ -O3 -Wall -shared -std=c++11 -fPIC $(python3 -m pybind11 --includes) example.cpp -o example$(python3-config --extension-suffix) -lpython3.6m
...