Никакая перегруженная функция не принимает аргументов - привязка функции 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 параметрами выдает ошибку, и ошибка даже не имеет смысла.
Большое спасибо.