Передайте целочисленный указатель из С++ в Python после привязки pybinding ⇐ C++
Передайте целочисленный указатель из С++ в Python после привязки pybinding
У меня есть функция cpp, которая регистрирует функцию Python в одной из своих частных переменных.
В cpp у меня есть две функции: register_callback и callCallback. register_callback примет функцию в качестве аргумента (эта функция будет передана из Python, а функция Python примет в качестве аргумента массив).
callCallback вызовет зарегистрированную функцию Python. (callCallback определит в ней массив, и этот массив будет передан в качестве аргумента зарегистрированной функции Python)
Я использовал pybind, чтобы получить эти функции cpp в Python. Итак, после регистрации функции Python в cpp с использованием функции register_callback, когда я вызываю функцию callCallback из кода Python, я получаю не весь массив, а только первый элемент в массиве. .(Тип полученных данных — целое число, а не массив) Как я могу получить весь массив, переданный из Python-кода cpp.
Если кто-то знает решение, пожалуйста, помогите мне с этим. Спасибо.
Я пытался использовать ctypes в Python, чтобы получить адрес переданного аргумента. Но не сработало.
код:
cpp(main.h):
#ifndef CALLBACK_MANAGER_H #define CALLBACK_MANAGER_H #include #include #include класс callbackManager { публика: void RegisterCallback(std::function обратный вызов); недействительный вызовCallback(); частный: std::function callback_; }; #endif cpp(main.cpp):
#include #include #include "main.h" #include пространство имен py = pybind11; void callbackManager::registerCallback(std::function обратный вызов) { std::cout
У меня есть функция cpp, которая регистрирует функцию Python в одной из своих частных переменных.
В cpp у меня есть две функции: register_callback и callCallback. register_callback примет функцию в качестве аргумента (эта функция будет передана из Python, а функция Python примет в качестве аргумента массив).
callCallback вызовет зарегистрированную функцию Python. (callCallback определит в ней массив, и этот массив будет передан в качестве аргумента зарегистрированной функции Python)
Я использовал pybind, чтобы получить эти функции cpp в Python. Итак, после регистрации функции Python в cpp с использованием функции register_callback, когда я вызываю функцию callCallback из кода Python, я получаю не весь массив, а только первый элемент в массиве. .(Тип полученных данных — целое число, а не массив) Как я могу получить весь массив, переданный из Python-кода cpp.
Если кто-то знает решение, пожалуйста, помогите мне с этим. Спасибо.
Я пытался использовать ctypes в Python, чтобы получить адрес переданного аргумента. Но не сработало.
код:
cpp(main.h):
#ifndef CALLBACK_MANAGER_H #define CALLBACK_MANAGER_H #include #include #include класс callbackManager { публика: void RegisterCallback(std::function обратный вызов); недействительный вызовCallback(); частный: std::function callback_; }; #endif cpp(main.cpp):
#include #include #include "main.h" #include пространство имен py = pybind11; void callbackManager::registerCallback(std::function обратный вызов) { std::cout
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение