Как написать Pybind11_module при использовании библиотеки облаков точек - PullRequest
1 голос
/ 21 сентября 2019

Я пишу проект на Python, и мне нужен модуль реконструкции облака точек для полигональной сетки и других операций.Поэтому я пишу эти модули на C ++, вызывая Point Cloud Library (PCL), Eigen и Pybind11.За исключением Eigen :: Matrix, pcl :: PointCloud, pcl :: PolygonMesh, я все еще определяю некоторые новые классы. Но в интерфейсной функции "PreProcess" (вызов этой функции python) я использую только Eigen :: Matrix и std :: vector , которые все поддерживаются pybind11, классы PCL и мои самоопределяемые классы толькоиспользуется в некоторых промежуточных подфункциях.

Я пробовал несколько простых игрушечных кодов (используйте только Eigen и Pybind11), используйте приведенный ниже код "PYBIND11_MODULE", который может быть успешно скомпилирован, Pybind может поддерживать Eigen :: Matrix и C ++ std::вектор.

Теперь в моем проекте c ++, когда я использую тот же "PYBIND11_MODULE" с кодом игрушки essy, он не может пройти компиляцию с ошибкой:

/ home / helanyi / Documents / pgnn /utils / surface_reconstruct / src / test.cpp: 931: 16: ошибка: ожидаемый конструктор, деструктор или преобразование типа перед '(' токен PYBIND11_MODULE (process, m) {

поэтому я хочу спросить, как это сделатьЯ пишу "PYBIND11_MODULE"? Нужно ли мне определять классы pcl и мои самоопределенные классы в "PYBIND11_MODULE"? Большое спасибо!

PYBIND11_MODULE(process, m) {
  m.doc() = "pybind11 example plugin";
  m.def("PreProcess", &PreProcess);
}
...