Pybind11: обратный вызов Python, выполненный в C ++ с модификацией параметровPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pybind11: обратный вызов Python, выполненный в C ++ с модификацией параметров

Сообщение Anonymous »

Я работаю над привязками Python моей библиотеки C ++ (решатель математической оптимизации), и я застрял в точке, где я создаю обратный вызов Python evaluate_constraints () , который принимает два аргумента, передаю его в библиотеку C ++ и оцениваю его с аргументами C ++. Обратный вызов изменяет свои вторые ограничения параметров на основе его первого параметра x .

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

// C++ code
#include "Vector.hpp"
#include 
namespace py = pybind11;

void solve(const std::function& evaluate_constraints) {
const Vector x = ...;
Vector constraints = ...;
evaluate_constraints(x, constraints);
}

PYBIND11_MODULE(myCppModule, module) {
py::class_(module, "Vector")
.def(py::init(), "Constructor")
.def("__getitem__", [](const Vector& vector, size_t index) {
return vector[index];
})
.def("__setitem__", [](Vector& vector, size_t index, double value) {
vector[index] = value;
});
module.def("solve", &solve);
}
< /code>
# Python code
import myCppModule

def evaluate_constraints(x, constraints):
constraints[0] = function of x
constraints[1] = function of x
...

myCppModule.solve(evaluate_constraints)
К сожалению, какая -то копия должна где -то произойти, потому что ограничения объекта C ++ не изменяются. Я не уверен, пропустил ли я что -то совершенно очевидное (я наткнулся на предложения, чтобы использовать py :: return_value_policy :: reference_internal , но безрезультатно) или действительно немного сложно. Тип.


Подробнее здесь: https://stackoverflow.com/questions/796 ... dification
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Pybind11: обратный вызов Python, выполненный в C ++ с модификацией параметров
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Pybind11: обратный вызов Python, выполненный в C ++ с модификацией параметров
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Pybind11: обратный вызов Python, выполненный в C ++ с модификацией параметров
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Pybind11: обратный вызов Python и аргумент C ++
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Pybind11: обратный вызов Python и аргумент C ++
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

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