C ++의 여러 인수를 MatLab 공유 라이브러리 함수에 전달

그릴 플레이트

공유 라이브러리를 사용하여 C ++ 애플리케이션에서 Matlab에 대한 기능 일치 알고리즘을 구현하고 있습니다. 문제는 함수에 4 개의 인수를 전달하지만 하나의 인수에 대한 값만 얻고 있다는 것입니다.

Matlab 기능 :

[c, d, e, f] = fm_test("C:\0.jpg", "C:\1.jpg");

function [FSC_1, FSC_2, NBCS_1, NBCS_2] = fm_test(path_im1, path_im2)
...
% Performed feature matching - output are 4 matrices with format n x 2 single
FSC_1 = matchedPoints1(inliersIndex, :);
FSC_2 = matchedPoints2(inliersIndex, :);  
NBCS_1 = matchedPoints1(inliers_NBCS, :);
NBCS_2 = matchedPoints2(inliers_NBCS, :);
end

라이브러리 컴파일러를 사용하여 C ++ 용 공유 라이브러리를 만들고 함수를 호출합니다.

mclmcrInitialize();
    //const char *args[] = { "-nojvm" };
    //const int count = sizeof(args) / sizeof(args[0]);
    if (!mclInitializeApplication(NULL, 0)) {

        std::cerr << "Could not initialize the application properly" << std::endl;
        return -1;
    }

    if (!fm_testInitialize()) {
        std::cerr << "Could not initialize the library properly" << std::endl;
        return -1;
    }
    else {
        try {
            for (size_t i = 0; i < cameras.size() - 1; ++i){

            mwArray FSC_1, FSC_2, NBCS_1, NBCS_2;
            mwArray path_1 = cameras[i].image_path.c_str();
            mwArray path_2 = cameras[i+1].image_path.c_str();
            fm_test(1, FSC_1, FSC_2, NBCS_1, NBCS_2, path_1, path_2);

            // Convert mwArray to vector<double>
            std::cout << " Printing sizes of mwArray" << std::endl;
            std::cout << FSC_1.NumberOfElements() << std::endl; 
            std::cout << FSC_2.NumberOfElements() << std::endl;
            std::cout << NBCS_1.NumberOfElements() << std::endl;
            std::cout << NBCS_2.NumberOfElements() << std::endl;
            }

        }
        catch (const mwException& e) {
            std::cerr << e.what() << std::endl;
            return -2;
        }
        catch (...) {
            std::cerr << "Unexpected error thrown" << std::endl;
            return -3;
        }
        fm_testTerminate();

    }

결과는 다음과 같습니다.

Printing sizes of mwArray
100 
0
0
0

함수에 여러 인수를 전달할 수 있습니까? mwArray더 구체적 으로 정의해야 합니까?

그릴 플레이트

Matlab 웹 사이트의 예제와 달리 다른 첫 번째 인수를 함수에 전달해야했습니다. 함수는 다음과 같이 정의됩니다.
extern LIB_fm_test_CPP_API void MW_CALL_CONV fm_test(int nargout, mwArray& FSC_1, mwArray& FSC_2, mwArray& NBCS_1, mwArray& NBCS_2, const mwArray& path_im1, const mwArray& path_im2);

첫 번째 인수는 출력으로 가지고있는 인수의 수로 변경되어야합니다 (제 경우에는 4). 올바른 함수 호출은 다음과 같습니다.
fm_test(4, FSC_1, FSC_2, NBCS_1, NBCS_2, path_1, path_2);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

공유 라이브러리를 만들기 위해 C의 여러 파일에서 전역 변수 컴파일

분류에서Dev

여러 버전의 공유 라이브러리를 설치할 수없는 이유는 무엇입니까?

분류에서Dev

Android.mk : 다른 공유 라이브러리에서 공유 라이브러리의 함수에 액세스

분류에서Dev

멤버 함수를 임의 정밀도 C ++ 구적 라이브러리 (Quadpack ++)에 전달

분류에서Dev

C 라이브러리의 함수 수

분류에서Dev

Jenkins 파일의 환경 변수를 코드로 파이프 라인이있는 공유 라이브러리로 전달

분류에서Dev

공유 라이브러리의 함수 포인터를 ctypes로 교체

분류에서Dev

petalinux의 공유 사전 빌드 라이브러리를 포함한 오류

분류에서Dev

Arduino 라이브러리 : 전역 변수의 여러 정의

분류에서Dev

라이브러리간에 C ++의 개체를 공유하는 방법

분류에서Dev

C ++ 두 개의 공유 라이브러리를 main.cpp에 연결

분류에서Dev

C ++ 함수에 여러 데이터 유형 (다른 차원의 배열 포함) 전달

분류에서Dev

익명의 여러 줄 함수를 다른 함수에 인수로 전달

분류에서Dev

공유 라이브러리 (이전 표준)를 C ++ 11 공유 라이브러리로 컴파일

분류에서Dev

main () C ++에서 여러 함수를 통해 포인터 전달

분류에서Dev

C ++에서 고유 라이브러리를 사용하여 전역 벡터 정의

분류에서Dev

C ++의 이중 함수에 void 함수를 인수로 전달

분류에서Dev

Python C API : 특수 유형이있는 여러 매개 변수의 두 함수를 모듈로 전달

분류에서Dev

R의 여러 중첩 함수에 임의의 인수 전달

분류에서Dev

런타임에 대상의 종속성 중 하나에 필요한 공유 라이브러리를 전달할 수 있습니까?

분류에서Dev

다른 버전의 공유 라이브러리에 연결

분류에서Dev

C에서 라이브러리 함수 모의

분류에서Dev

C 라이브러리의 전역 변수

분류에서Dev

CMake : 클래스 외부에 정의 된 전역 함수를 보유하는 라이브러리 연결

분류에서Dev

공유 객체 라이브러리에 중단 점 x를 삽입 할 수 없습니다 (python은 C ++에서 .so 라이브러리를 사용함).

분류에서Dev

라이브러리와 함께 CUDA 함수 포인터 전달

분류에서Dev

R의 dplyr 함수에 여러 인수를 전달할 때 오류 발생

분류에서Dev

R의 dplyr 함수에 여러 인수를 전달할 때 오류 발생

분류에서Dev

동적 링크 라이브러리에 함수 전달

Related 관련 기사

  1. 1

    공유 라이브러리를 만들기 위해 C의 여러 파일에서 전역 변수 컴파일

  2. 2

    여러 버전의 공유 라이브러리를 설치할 수없는 이유는 무엇입니까?

  3. 3

    Android.mk : 다른 공유 라이브러리에서 공유 라이브러리의 함수에 액세스

  4. 4

    멤버 함수를 임의 정밀도 C ++ 구적 라이브러리 (Quadpack ++)에 전달

  5. 5

    C 라이브러리의 함수 수

  6. 6

    Jenkins 파일의 환경 변수를 코드로 파이프 라인이있는 공유 라이브러리로 전달

  7. 7

    공유 라이브러리의 함수 포인터를 ctypes로 교체

  8. 8

    petalinux의 공유 사전 빌드 라이브러리를 포함한 오류

  9. 9

    Arduino 라이브러리 : 전역 변수의 여러 정의

  10. 10

    라이브러리간에 C ++의 개체를 공유하는 방법

  11. 11

    C ++ 두 개의 공유 라이브러리를 main.cpp에 연결

  12. 12

    C ++ 함수에 여러 데이터 유형 (다른 차원의 배열 포함) 전달

  13. 13

    익명의 여러 줄 함수를 다른 함수에 인수로 전달

  14. 14

    공유 라이브러리 (이전 표준)를 C ++ 11 공유 라이브러리로 컴파일

  15. 15

    main () C ++에서 여러 함수를 통해 포인터 전달

  16. 16

    C ++에서 고유 라이브러리를 사용하여 전역 벡터 정의

  17. 17

    C ++의 이중 함수에 void 함수를 인수로 전달

  18. 18

    Python C API : 특수 유형이있는 여러 매개 변수의 두 함수를 모듈로 전달

  19. 19

    R의 여러 중첩 함수에 임의의 인수 전달

  20. 20

    런타임에 대상의 종속성 중 하나에 필요한 공유 라이브러리를 전달할 수 있습니까?

  21. 21

    다른 버전의 공유 라이브러리에 연결

  22. 22

    C에서 라이브러리 함수 모의

  23. 23

    C 라이브러리의 전역 변수

  24. 24

    CMake : 클래스 외부에 정의 된 전역 함수를 보유하는 라이브러리 연결

  25. 25

    공유 객체 라이브러리에 중단 점 x를 삽입 할 수 없습니다 (python은 C ++에서 .so 라이브러리를 사용함).

  26. 26

    라이브러리와 함께 CUDA 함수 포인터 전달

  27. 27

    R의 dplyr 함수에 여러 인수를 전달할 때 오류 발생

  28. 28

    R의 dplyr 함수에 여러 인수를 전달할 때 오류 발생

  29. 29

    동적 링크 라이브러리에 함수 전달

뜨겁다태그

보관