Никакая перегруженная функция не принимает аргументов - привязка функции pybind11

Я использую pybind11 и пытаюсь связать указатель функции, который был создан с помощью макроса препроцессора.

Я получаю эту ошибку при попытке скомпилировать мой проект:

Error   C2661   'pybind11::cpp_function::cpp_function': no overloaded function takes 4 arguments

Эта ошибка не имеет смысла для меня, потому что я не пытаюсь использовать функцию, которая принимает 4 аргумента. Вот мой код, который не компилируется:

#define FN(name, type, address)                                                \
auto name = reinterpret_cast<std::add_pointer_t<type>>(address);

FN(print_text, void __fastcall (), 0x412AF0)
FN(log_text, void __fastcall(wchar_t *str, int color), 0x15E3A0)

PYBIND11_EMBEDDED_MODULE(d2py, m) {
    m.def("print_text", &print_text);
    m.def("log_text", &log_text);
}

print_text Функция работает отлично. Это терпит неудачу на log_text, Если я определю функцию следующим образом:

m.def("log_text", [](wchar_t *str, int color) { log_text(str, color); });

Любая помощь будет потрясающей, я не понимаю, почему работает функция без параметров, но функция с 2 параметрами выдает ошибку, и ошибка даже не имеет смысла.

Большое спасибо.

0 ответов

Другие вопросы по тегам