Haroop Webagency team BICTOR

원격 및 파견 개발팀분들을 위한 하룹소속 개발자전용 빅터 오픈소스 커뮤니티입니다

이곳은 하룹 개발팀 소속 직원들에 전체 개발기술력 및 전체 평균 능력치 강화를 위한, 빅터팀 리드개발자들에 오픈소스 개발 커뮤니티 공간입니다, 만약 고객이시라면 여기를 이용해주세요.

제목
안녕하세요 혹시 람다에서 php를 c++로 불러올수있을까요?
작성자
퍼널
작성일
2022-05-05 21:28
조회
312
답변완료
혹시 C++ 람다함수를 콜백으로 사용하려하는데
대략적으로 힌트만 주실수있을까요ㅠ
전체 2

  • 2022-05-05 22:34

    안녕하세요 퍼널님 아래 코드를 참고하시면 이해가 되실거같습니다.
    이해가 안되시면 답변남겨주시면 좀 더 상세히 설명해드릴수있도록 하겠습니다.

    1.콜백함수를 이용합니다.
    function my_array_map($array, $callback) {
    $result = array();
    foreach ($array as $index => $item) {
    $result[$index] = $callback($item);
    }
    return $result;
    }

    2.C++를 콜백으로 이용가능합니다.
    #include
    void run_test()
    {
    Php::Function multiply_by_two([](Php::Parameters ¶ms) -> Php::Value {
    if (params.empty()) return nullptr;
    Php::Value param = params[0];
    return param * 2;
    });
    Php::Value four = multiply_by_two(2);
    Php::Value value = multiply_by_two;
    Php::Value six = value(3);
    Php::Value array;
    array[0] = 1;
    array[1] = 2;
    array[2] = 3;
    array[3] = 4;
    Php::Value result = Php::call("my_array_map", array, multiply_by_two);
    }
    extern "C" {
    PHPCPP_EXPORT void *get_module()
    {
    static Php::Extension extension("lambda", "1.0");
    extension.add("run_test",run_test);
    return extension;
    }
    }

    이렇게만 실행시키면, segmentation fault(core dumped)가 나올수있는데, 위부분 소스를 참고하여 구성하면
    충분히 원하시는것을 구현하실수있으실거라 생각합니다. 참고하시어 원하시는부분 잘 해결하시길 바라겠습니다 🙂


  • 2022-05-06 09:53

    감사합니다 ㅠ 잘되네요ㅠㅠ