Exporting wrapped functions doesn't work
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 38/100
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện các ví dụ về hàm được bọc trong issue, sau đó kiểm tra entry point boost::python::def và cách xử lý các đối tượng có thể gọi. Hoàn thành khi các ví dụ add2 và add được bọc có thể được export thành công, tương ứng với các trường hợp vốn đã hoạt động trực tiếp.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
I find myself in need of exporting a whole lot of functions to Python which require a wrapper (the API needs locking and whatnot).
The following code probably should work (pybind11 can handle it, for the most part), but doesn't.
#include <iostream>
#include <boost/python.hpp>
template <class R, class... Args>
struct wrap
{
using funct_type = R(*)(Args...);
funct_type func;
wrap(funct_type f): func(f) {};
R operator()(Args&&... args)
{
std::cout << "before calling\n";
R ret=func(std::forward<Args>(args)...);
std::cout << "After calling\n";
return ret;
}
};
class bar {};
class foo : bar {
public:
enum xfoo { FOO=1, BAR=2, BAZ=3 };
static int add(int a, int b, enum xfoo c) { return a+b; }
static int add2(int a, int b) { return a+b; }
};
BOOST_PYTHON_MODULE(example)
{
using namespace boost::python;
// this works
std::cout << "Result" << wrap{foo::add}(1,2, foo::xfoo::FOO) << std::endl;
// so does this
def("add", foo::add, "A function that adds two numbers and no enum");
// this works with pybind11 but not boost
def("add2", wrap{foo::add2}, "A function that adds two numbers");
// this works with neither
def("add", wrap{foo::add}, "A function that adds two numbers and no enum");
}
- Ngôn ngữ chính
- C++
- Star
- 537
- Fork
- 223
- Merge trung bình
- 11 giờ 22 phút
- Pull request đã merge (30 ngày)
- 2
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của boostorg/python
-
numpy::from_data calls vector::front and crashes (or has UB) when called with a scalar object Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 84/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
-
BoostDetectToolset-1.90.0.cmake file not found in an include() call in boost_python-config.cmake Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 48/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
Tất cả issue của boostorg/python
Issue tương tự
-
AuTest Bug Tests
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
apache/trafficserver#13714 ·
-
bug build
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
facebookincubator/velox#19143 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
tenstorrent/tt-metal#57393 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
objectionary/eo-graphs#74 ·